appA 调用 appB 的 Activity,这个 Task 是什么情况?
- 时间:2018-03-29
- 发布:青岛android培训
- 来源:互联网
- 分享到:
1.Task & Back Tack
由同一个应用启动的Activity默认都在同一个任务栈中(Task)
任务栈的形式和学习C语言的栈是一样的遵循后进先出的原则,看图很好理解
2.appA 调用 appB 的 Activity,这个 Task 是什么情况?
默认情况
appB的 Activity好像是嵌入到了appA的Task中,但是不影响appB的正常运行,appB有自己的Task
FLAG_NEW_TASK:
appB 的 Activity 不嵌入到appA 的Task中,而是加入到appB自己的Task
FLAG_ACTIVITY_CLEAR_TOP:
当Intent对象包含这个标记时,如果在栈中发现存在Activity实例,则清空这个实例之上的Activity,使其处于栈顶。
FLAG_ACTIVITY_SINGLE_TOP:
在使用默认的“standard”启动模式下,如果没有在Intent使用到FLAG_ACTIVITY_SINGLE_TOP标记,那么它将关闭后重建,如果使用了这个FLAG_ACTIVITY_SINGLE_TOP标记,则会使用已存在的实例
3.如何获取当前屏幕Activity的对象?
使用ActivityLifecycleCallbacks
传送地址: Android 如何获取当前Activity实例对象?
4.你知道onNewIntent吗?
如果IntentActivity处于任务栈的顶端,也就是说之前打开过的Activity,现在处于onPause、onStop 状态的话,其他应用再发送Intent的话,执行顺序为:
onNewIntent,onRestart,onStart,onResume.
5.除了用Intent 去启动一个Activity,还有其他方法吗?
使用adb shell am 命令
am启动一个activity
adb shell am start com.example.fuchenxuan/.MainActivity
am发送一个广播,使用action
adb shell am broadcast -a magcomm.action.TOUCH_LETTER
6.Android Service与Activity之间通信的几种方式?
通过Binder对象
当Activity通过调用bindService(Intent service, ServiceConnection conn,int flags),得到一个Service的一个对象,通过这个对象我们可以直接访问Service中的方法。
通过Broadcast Receiver(广播)的形式
EventBus 是一个Android开源事件总线框架 后面我们会有专门的讲解。
7.TaskAffinity 是什么?
标识Activity任务栈名称的属性:TaskAffinity,默认为应用包名
如果新Activity是透明主题时,旧Activity会不会走onStop
不会!
本篇文章是有青岛android培训班为您呈现,希望给您带来更多更好的文章
更多青岛android培训机构相关资讯,请扫描下方二维码