如何在按下主页按钮时完成()一个活动

Yos*_*ssi 9 android activity-finish android-activity

由于一个复杂的原因,我需要能够在用户按下HOME按钮时完成()我的活动.

这里的故事是我有一个主屏幕小部件,它启动了我的应用程序的不同部分,它具有完全透明的活动(因此即使我的活动正在运行,主屏幕仍会显示).如果先前的活动通过"主页"按钮终止,则它们将被带到前台并遮盖主屏幕.

或者作为替代方案,我可以以某种方式强制完成()之前的活动吗?

dyl*_*phy 12

关于什么

android:launchMode="singleTask"
Run Code Online (Sandbox Code Playgroud)

要么

android:launchMode="singleInstance"
Run Code Online (Sandbox Code Playgroud)

在你的清单?我认为singleTask是你想要的那个,但我仍然不清楚你在做什么.

"系统在新任务的根目录下创建活动并将意图路由到它.但是,如果活动的实例已经存在,系统会通过调用其onNewIntent()方法将意图路由到现有实例,而不是而不是创造一个新的." singleTask

@Override
void onPause() {
   super.onPause();
   finish();
}
Run Code Online (Sandbox Code Playgroud)

dev docs:Acitvity Lifecycle ,Finish

  • 工作了!!! 这个答案是最接近的,所以我会接受它.我在[onUserLeaveHint](http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint())中添加了finish()并确保从此活动中对startActivity的所有调用都包含标志**Intent.FLAG_ACTIVITY_NO_USER_ACTION**只有在用户真正离开我的活动时才会调用**onUserLeaveHint()**.这些Android平台的家伙想到了一切! (2认同)