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

时间:2011-06-17 15:50:43

标签: android android-activity activity-finish

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

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

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

5 个答案:

答案 0 :(得分:11)

怎么样

android:launchMode="singleTask"

android:launchMode="singleInstance"
你的清单中的

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

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

@Override
void onPause() {
   super.onPause();
   finish();
}

dev docs:Acitvity LifecycleFinish

答案 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();
}