• android开发全然退出activity


    我们退出Activity能够调用:finish(),system(0),可是这些都仅仅是单单退出单个Activity


    也有人会说,直接把进程杀死,这些做法都不是非常可取。事实上我们翻看api能够发现。Activity


    都是放入stack中管理,我们仅仅要把stack清空了,不就全然退出了嘛。

    要对Activity的stack


    管理,就须要了解launchMode的四种状态。这里就不多说了。自己看看api。


    我们就利用android:launchMode="singleTop",当该Activity在栈顶时。会清空它以下的Activity


    然后把当前Activity finish掉,就全然关闭了。




    实例 A,B。C,D四个Activity;A作为入口,在manifest.xml设置android:launchMode="singleTop"


    其它几个不须要设置。

    启动顺序 A->B->C->D


    这里我们在D窗体打开A窗体时在Intent中直接增加标志Intent.FLAG_ACTIVITY_CLEAR_TOP,


    再次开启A时将会清除该进程空间的全部Activity。


    在D中使用以下的代码:
    Intent intent = new Intent(); 
    intent.setClass(D.this, A.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
    startActivity(intent)
    finish();

    A中代码:

    protected void onNewIntent(Intent intent) {
    
    super.onNewIntent(intent);
    
    //退出
    
    if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {
    
    finish();
    }
    }




    由于A是android:launchMode="singleTop"不会调用oncreate(),而是响应onNewIntent()


    这时候推断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把A finish()掉。


    B,C也被清掉了,由于A中是android:launchMode="singleTop",栈以下的都被清理。




    栈中A,B,C,D所有被清理。所以整个程序退出了。

  • 相关阅读:
    rpm常见命令使用说明
    终端传值给Makefile、Makefile传值给C++代码
    redis实现异步队列
    redis实现分布式锁
    正则表达式
    nginx安装
    metaq
    zeromq
    ActiveMq
    http压力测试
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5325610.html
Copyright © 2020-2023  润新知