9

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

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

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

4

5 回答 5

12

关于什么

android:launchMode="singleTask"

或者

android:launchMode="singleInstance"

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

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

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

开发文档:活动生命周期完成

于 2011-06-17T16:07:14.710 回答
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>

于 2014-10-23T01:35:23.370 回答
0

不确定按下主页按钮时的完成(),但我认为您可以使用完成()上一个活动:

Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
finish();

可能不是最好的方法。我认为您也可以调用子活动的父活动并以这种方式完成它,但不确定。

于 2011-06-17T16:01:10.267 回答
0

我在按下主页按钮时遇到了关闭声音的问题。我在下面做了这段代码。希望对您有所帮助。覆盖 onpause() 方法。

 @Override
 public void onPause(){
      System.exit(0);
      super.onPause(); 
 }
于 2012-04-10T05:21:08.570 回答
-1
@Override
public void onStop() {
    super.onDestroy();
}
于 2015-02-20T16:36:02.577 回答