实习笔记-11
Intent Action相关
chooser
可自定义标题,弹出软件选择器
1 | Intent intent = new Intent(); |
方便起见,可以使用
1 | Intent.createChooser(Intent,CharSequence) |
可自定义标题,弹出软件选择器
1 | Intent intent = new Intent(); |
方便起见,可以使用
1 | Intent.createChooser(Intent,CharSequence) |
T getService(ContextImpl ctx);
ActivityThread 中的main方法,一个应用程序对应一个ActivityThread对象,Zygote孵化出一个进程后,就会执行main方法
1 | private void attach(boolean system, long startSeq) { |
使用MutableLiveData的observer对数据进行观察,跳转界面返回后删除list中的元素,出现CurrentModificationException
改用Vector等线程安全的集合
Binder 与其他IPC的比较
binder | 共享内存 | Socket |
---|---|---|
拷贝一次 | 0 | 1 |
C/S模式,易用性高 | 控制负载,易用性差 | C/S开销大 |
为每个App分配UID | 访问接入点是开放的,不安全 | 访问接入点是开放的,不安全 |
共享内存 两个mmap,Binder一个mmap
1 | val name: LiveData<NameBean> get() = _name |
根据条件判断某些控件显示,某些不显示时,可以使用ViewStub来减少不必要的实例化开销。
android.view.ViewStub,ViewStub 是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有 ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候。
满足某些条件或触发某些事件后
才执行指定的行为exported = false
,其他应用
如果使用 Intent 就访问不到这个 Activity,但是使用 PendingIntent 是可以的。1 | getActivity() |
1 | 参数: |
flags | |
---|---|
FLAG_CANCEL_CURRENT | 先将当前已有的PendingIntent取消,然后重新生成一个PendingIntent对象。 |
FLAG_NO_CREATE | 如果当前系统中不存在相同的PendingIntent对象,系统将返回null,否则返回已有对象 |
FLAG_ONE_SHOT | 该PendingIntent只作用一次。在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()进行销毁,那么如果你再调用send()方法的话,系统将会返回一个SendIntentException。 |
FLAG_UPDATE_CURRENT | 更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras |
FLAG_IMMUTABLE | 创建的PendingIntent是不可变的,使用send方法发送的附加Intent会被忽略 |