zoukankan      html  css  js  c++  java
  • Android不同方式启动导致重复启动相同的Activity的问题解决办法(转载,解决了我的问题)

    打开程序入口有好多种方法:

    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,

    神烦,正在想解决办法。

    转载的链接:http://www.th7.cn/Program/Android/201410/305710.shtml

  • 相关阅读:
    002powershell使用常见问题
    028_如何外网下载大文件
    028MAC常用工具unlicense
    027_录屏倒计时弹窗实用小程序
    NIO相关基础篇
    写给刚上小学一年级的果果(家长寄语)
    [转]Mavlink协议
    [原][ARCGIS]使用ARCMAP分离导出单个矢量图形文件SHP
    [原][译]从osgEarth2升级到osgEarth3的变化
    [减肥]生酮减肥餐做法
  • 原文地址:https://www.cnblogs.com/xinandming/p/4555606.html
Copyright © 2011-2022 走看看