我想制作 android 应用程序,当 home 被点击时,这些应用程序会被破坏。因此,当应用程序再次启动时,应用程序将从头开始重新启动。不恢复应用程序``
4 回答
@Override
public void onAttachedToWindow()
{
Log.i("TESTE", "onAttachedToWindow");
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
使用此方法,HOME 按钮在此活动中停止工作(仅此活动)。然后你只需重新实现它,因为它是一个普通的按钮事件(例如后退按钮)。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
Log.i("TESTE", "BOTAO HOME");
return true;
}
return super.onKeyDown(keyCode, event);
}
在您的主要活动清单中放置
android:clearTaskOnLaunch="true"
android:finishOnTaskLaunch="true"
来自http://developer.android.com/guide/topics/manifest/activity-element.html的官方文档clearTaskOnLaunch
当值为“true”时,每次用户再次启动任务时,他们都会被带到其根活动,而不管他们最后在任务中做什么,也不管他们是使用后退还是主页按钮离开它。当值为“false”时,任务可能会在某些情况下清除活动(请参阅 alwaysRetainTaskState 属性),但并非总是如此。
例如,假设有人从主屏幕启动活动 P,然后从那里转到活动 Q。用户接下来按 Home,然后返回到活动 P。通常,用户会看到活动 Q,因为那是他们最后在 P 的任务中做。但是,如果 P 将此标志设置为“true”,则当用户按下 Home 并且任务进入后台时,它上面的所有活动(在本例中为 Q)都将被删除。所以用户返回任务时只看到P。
您可以覆盖 onPause 并在每次活动暂停时完成应用程序。当不在前台时,这将破坏应用程序。
@Override
public void onPanelClosed(int featureId, Menu menu) {
finish();
super.onPanelClosed(featureId, menu);
}
或者您可以在清单中说,此活动不应该能够返回。当不在前台时,这不会破坏应用程序。
<activity
android:name="com.testapp.MainActivity"
android:label="@string/app_name"
android:noHistory="true" >
</activity>