由于一个复杂的原因,我需要能够在用户按下HOME按钮时完成()我的活动。
这里的故事是我有一个主屏幕小部件,它启动了我的应用程序的不同部分,它具有完全透明的活动(因此即使我的活动正在运行,主屏幕仍会显示)。如果先前的活动通过“主页”按钮终止,则它们将被带到前台并遮盖主屏幕。
或者作为替代方案,我可以以某种方式强制完成()之前的活动吗?
答案 0 :(得分:11)
怎么样
android:launchMode="singleTask"
或
android:launchMode="singleInstance"
你的清单中的?我认为singleTask
是你想要的,但我仍然不清楚你在做什么。
“系统在新任务的根目录下创建活动并将意图路由到该任务。但是,如果活动的实例已经存在,系统会通过调用其onNewIntent()将意图路由到现有实例方法,而不是创建一个新方法。“ singleTask
@Override
void onPause() {
super.onPause();
finish();
}
dev docs:Acitvity Lifecycle ,Finish
答案 1 :(得分:3)
在主屏幕上启动的活动中设置android:clearTaskOnlaunch =“true”。 例如:
<activity
android:name="MainActivity"
android:exported="true"
android:clearTaskOnLaunch="true"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 2 :(得分:0)
不确定主页按钮按下完成()但我认为您可以使用以下内容完成()之前的活动:
Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
finish();
可能不是最好的方法。我想你也可以调用子活动的父活动并以这种方式完成它但不确定。
答案 3 :(得分:0)
我遇到按下主页按钮关闭声音的问题。我在下面做了这个代码。希望它会帮助你。 覆盖onpause()方法。
@Override
public void onPause(){
System.exit(0);
super.onPause();
}
答案 4 :(得分:0)
@Override
public void onStop() {
super.onDestroy();
}