我有一个必须定义的根活动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开发术语。
怎么做?
答案 0 :(得分:0)
答案非常简单,自API 1以来就一直如此。使用提供给finishActivity(int intent_id)
的{{1}} intent_id
来呼叫startActivityForResult(Intent, int)
。