Android不同方式启动导致重复启动相同的Activity的问题解决办法
来源:互联网 发布:python编程实践 编辑:程序博客网 时间:2024/04/27 22:30
打开程序入口有好多种方法:
1、shell命令打开运行
2、Launcher待机界面运行
3、状态栏启动运行
4、桌面快捷方式运行
5、软件中调用运行
6、安装软件后执行“open/打开”运行
如果用户安装后立即执行“open/打开” 运行或者用adb shell命令运行应用程序,然后点HOME键把程序挂起,
然后再采用其他发送启动程序,这样则会再启动一个Main程序,
导致用户要点击多下才能退出程序,
那么原因是什么呢?
这是因为Intent的处理机制是,先比较Activity,再比较Action、Flag、bnds。。。,前后两张方式的Action不一样,
一个有LAUNCHER ACTION,一个没有,所以会认为是启动两个不同的INTENT。
那么问题来了,解决bug技术哪家强呢?
哈哈,很简单:可以尝试在AndroidManifest.xml文件中的启动activity一项中加入参数:
android:launchMode="singleInstance"
问题又来了为什么这行代码那么神奇呢,我们看看这行代码的原理:
当一个Acitivty被设置成singleInstance模式后,该Acitivity就会有一个独享的任务栈,当它一旦被创建就不会再重新创建。
这下全明白了吧,
当然也会有一点点后遗症,如果你在使用startActivityForResult的时候:
解释什么是startActivityForResult:A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A-Activtiy
这个时候如果你吧A-Activity设置成singleInstance模式的话就收不到B-Activity返回的数据了,原因呢:
很简单,因为A-Activity不能被重新创建,不会执行回调,当然就不好用了,嘿嘿,解答完毕。
重点:发现一个问题时如果用Home键把程序挂到后台,再点击运行常规是直接进入原来已有的界面,但设置成singleInstance模式后启动会重新加载这个Acitivity,
神烦,正在想解决办法。
- Android不同方式启动导致重复启动相同的Activity的问题解决办法
- android 中Activity 五种不同的启动方式
- Android中不同方式启动Activity的区别
- Android Activity的启动方式
- Android 启动Activity的方式
- Android Activity的启动方式
- Activity的启动方式
- Activity的启动方式
- Activity的启动方式
- Activity的启动方式
- service 启动activity的问题解决
- Android中Activity启动的方式
- android启动activity的几种方式
- android中Activity的启动方式
- android开发中activity的启动方式
- android启动activity的几种方式
- Android之Activity的启动方式
- Android 讲解:Activity 的启动方式
- Eclipse安装JD-Eclipse反编译插件
- cocos2dx 3.2键盘操控的列表页的初步实现
- 设计模式--单例模式
- java设计模式之代理
- js解析xml文件并实现省市的二级连动分析案例
- Android不同方式启动导致重复启动相同的Activity的问题解决办法
- 第十周血型统计
- oracle 表压缩技术
- 第十周项目一 思则运算
- 关于Android 权限管理的几点认识
- gdb 调试 笔记(1)
- 程序员必看的书
- 第十周项目一 2:领会各种控制符号所起的作用和方式
- 不要忘掉别人生气时对你说的话 因为那才是你在别人心里的样子