0

我想制作 android 应用程序,当 home 被点击时,这些应用程序会被破坏。因此,当应用程序再次启动时,应用程序将从头开始重新启动。不恢复应用程序``

4

4 回答 4

1
@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);    
}

取自Can I override the 'Home' button in my application?

于 2013-09-29T17:18:37.390 回答
0

在您的 onStop 方法中执行此操作

@Override
    protected void onStop() {
        finish();
        super.onStop();
    }

希望这有效

参考

于 2013-09-29T17:24:38.497 回答
0

在您的主要活动清单中放置

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。

于 2013-09-29T18:09:20.783 回答
0

您可以覆盖 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>
于 2013-09-29T17:27:43.843 回答