从软键按下最近的应用程序关闭/杀死Android应用程序

时间:2015-12-30 21:28:42

标签: android android-activity service android-windowmanager

我有一个覆盖所有应用的视图。我想在软键按下(主页,后退和最近)屏幕上关闭叠加视图。我有一个透明的活动,没有内容正在启动具有叠加视图的服务。

    public class SampleOverlayShowActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startService(new Intent(this, SampleOverlayService.class));
    }

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

内部清单

<activity
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:name="SampleOverlayShowActivity"
            android:excludeFromRecents="true"
            android:theme="@android:style/Theme.Dialog" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

一切正常,期待最近的应用程序。活动仍显示在最近的应用程序按钮按下。当我再次按下最近的应用程序按钮时,它被删除了。

1 个答案:

答案 0 :(得分:1)

这比尝试覆盖软键行为以进行清理要简单得多。而是确保启动活动,以便它没有最近的痕迹。从清单表示添加noHistory和excludeFromRecents

<activity android:excludeFromRecents="true"
          android:noHistory="true"
          android:name=".."
          ...>
     <intent-filter>
            ...
     </intent-filter>
</activity>

请注意,android:excludeFromRecents仅适用于该任务,因此您可能希望使用适当的标记(android:launchMode="singleTask")确保活动也是新任务