android 第一次安装 home

  首次安装,出现“打开”按钮,我们点击打开按钮启动应用进主界面,我们再按之前的操作,按home键返回桌面,然后点击应用图标进入就会发现会重启应用,并且退出的时候退出两次才会回到桌面,那么我们来分析一下这是为什么呢?

     首先我们要知道,一个task并不是对应一个线程,实际上一个task可以包含多个进程, 一个Task中可能有多个同一个Activity的实例,然后这时候第一次的情况下,并不是设置launchMode就可以保证单例的,在资料上看到,这也是安卓系统的一个漏洞,但是官方也给出了对应的API来解决这个问题。

   

解决方法: 
 根activtiy 的onCreate方法里,在super.onCreate(savedInstanceState)这一行代码之后,一定要在这行代码之后,插入以下代码:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // if(!isTaskRoot()),判断该Activity是不是任务空间的源Activity
        // “非”也就是说是被系统重新实例化出来,如果你就放在launcher
        // Activity中话,这里可以直接return了。
        if (!isTaskRoot()) {
            finish();
            return;
        }
 }
 
方法二:在
   super.onCreate(savedInstanceState)后添加


if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){
    LogUtil.v("mxs","重复创建");
    finish();
    return;
}

最终打开的始终只有一个应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值