关于程序中Activity若干问题知识点总结
来源:互联网 发布:网络产品线分为 编辑:程序博客网 时间:2024/05/19 16:02
首先需先清楚android中四大启动方式:
- standard
- singleTop
- singleTask
- singleInstance
然后贴两个帖子:
android中activity的四种加载模式
android:launchMode设置成singleTask时的一个问题
Activity启动模式singleTask,singleInstance研究
然后,下面是我自己的总结:(半拿半总结)
关于SingleTask模式:
1.一个项目中的android.intent.action.MAIN 的Activity不要设置为singleTask模式,否则,当ActivityA --> ActivityB此时比如来了一个电话,按了Home键,接完电话然后重新点击此程序图标将又重新从ActiivtyA开始执行,原因是:
“
第一个是singletask也就是启动第一个actvity的时候会放置放置到一个新的task下,当你再启动其他activity时第一个 activity就在栈的底部,当你再次进入程序时他会查看是否有其他任务的栈里含有这个singletask的activity如果它在底部那么就将在他上面的都finish掉,所以再回去总是第一个界面。
” android:launchMode设置成singleTask时的一个问题第22楼说的
2.如果想要从ActivityX中setResult返回结果,那么此Actiivty不能设置为SingleTask模式,否则将无法收到intent信息,原因参照Activity启动模式singleTask,singleInstance研究
3.如果ActivityA设置为singleInstance模式,那么不管ActivityB有没有设置为singleTask,从ActivityA中startActivityForResult到ActivityB中,都无法获得结果,原因是
“
singleInstance要求activity的实例不仅只有一个,并且整个task中只有一个activity实例,而singleTask所在的栈中允许存在其他activity的实例
”(来源Activity启动模式singleTask,singleInstance研究)
4.假设场景启动应用程序顺序是ActivityA --> ActivityB --> ActivityC,而要求如果在ActivityC中按Home键,然后重新进来,启动顺序是ActivityA --> ActivityC,这个ActivityC不确定指的是按Home键的Activity,怎么办?一定要在每次唤醒之后先启动ActivityB,咋办?
解决办法是:对ActivityA设置为SingleInstance模式,然后再在应用中增加一个中间Activity,假设为MiddleActivity,在其onCreate()方法中直接finish(),然后在ActivityA中增加一个变量boolean mIsFirstLaunch = true;当第一次跳转ActivityB的时候设其为false,当再次启动的时候检测mIsFirstLaunch 是否为false,为false就进入MiddleActivity,而MiddleActivity又直接finish()了,就又回到ActiivtyC了
个中缘由:ActivityA为SingleInstance模式,即在一个单独的Task中且只有它一个Activity,而其他activity都在另一个task中,当按H键的时候ActivityC在此task中的栈顶,但是相隔两个task中,而且又不确定应该从ActivityA中启动哪个activity,所以直接以MiddleActivity为跳板,回到栈顶,然后finish(),自然就回到ACtivityC了。
很easy的一个问题,关键是思路。
- 关于程序中Activity若干问题知识点总结
- 写Win32程序中遇到的若干问题总结
- 关于字符集的若干问题总结
- 关于有环链表的若干问题总结
- Activity知识点总结
- java中关于继承的知识点总结
- java中关于接口的知识点总结
- 关于发布MFC程序的若干问题
- 关于C/C++中二维数组、指针的引用等若干问题的总结
- 关于Windows Service 若干问题(连载中)
- JAVA中关于String的若干问题
- 几个关于Activity的知识点
- Android Activity 知识点全面总结
- Android Activity 知识点全面总结
- Fragment、Activity的知识点总结
- 小程序知识点总结
- XAMARIN程序知识点总结
- 关于const知识点总结
- 为何Emacs和Vim被称为两大神器
- tb中的控件置顶
- win7下:您的计算机配置似乎是正确的,但该设备或资源(DNS 服务器)没有响应。
- 黑马程序员_总结跳转语句、枚举类型、结构体类型、类以及值类型和引用类型的区别
- JS取得本地时间(年月日时分秒 星期)
- 关于程序中Activity若干问题知识点总结
- mysql的编码问题
- 1^b+2^b+3^b+...+n^b数列
- 黑马程序员_多线程
- 如何做好自由职业
- 黑马程序员_Sql Server总结
- windows+eclipse做android开发 jni找不到标准C++的头文件问题
- 做数据库维修工、还是码农?
- yocto environment:imx6q Cross Compile Toolchain Installation