清除所有Activity的Android应用程序(上面/启动,包括主要推出的)

时间:2015-02-26 18:31:49

标签: android terminate back-stack

我有一个必须定义的根活动singleTop

    <activity
        android:name=".MyMainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我有一个通知,它向我的前台服务发送一个广播告诉它,如果它绑定到MyMainActivity,则该活动停止。可以触摸窗口小部件以将MyMainActivity恢复到之前的状态,因此需要singleTop

问题在于,自从在通知中引入停止服务按钮(de rigeur,据我所知),它只会查杀MyMainActivity,这意味着从它开始的任何Activity都会持续存在,因为我意图它,但由于它们的原始MyMainActivity已经被破坏而未能返回有意义的结果。

在断开与服务的连接后,我一直坚持使用简单的finish()来处理来自MyMainActivity的终止广播。所有其他finish变体都有不良副作用。

System.exit(0);确实很有效。除了忽略销毁的预期生命周期过程并重新启动有点麻烦。

finishAffinity是另一个候选人,除了描述:

  

完成此活动以及紧接其下的所有活动

当我需要完成它上面的活动时,根据android开发术语。

怎么做?

1 个答案:

答案 0 :(得分:0)

答案非常简单,自API 1以来就一直如此。使用提供给finishActivity(int intent_id)的{​​{1}} intent_id来呼叫startActivityForResult(Intent, int)