我想知道如何在用户按下主页按钮时退出应用程序。Android - 当用户按主页按钮时如何退出应用程序?
据我所知,Home Button在后台移动正在运行的应用程序,并将Launcher进程放在前面。
我知道我可以使用完成(),但我不知道我应该叫它的位置,因为我不知道哪个函数会在用户按Home键时接到呼叫。
谢谢。
我想知道如何在用户按下主页按钮时退出应用程序。Android - 当用户按主页按钮时如何退出应用程序?
据我所知,Home Button在后台移动正在运行的应用程序,并将Launcher进程放在前面。
我知道我可以使用完成(),但我不知道我应该叫它的位置,因为我不知道哪个函数会在用户按Home键时接到呼叫。
谢谢。
取决于你想要做什么,覆盖onUserLeaveHint
可能是最好的选择:
http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()
这将让你的应用程序知道您的应用程序正在退出,因为用户选择切换应用程序(就像点击主页按钮或选择通知一样)。如果传入的电话(或类似)导致您的应用程序转到后台,此提示功能将会调用而不是,因为用户未启动该操作。
谢谢。这正是我期待的。我不知道为什么CommonsWare在Android中提供这种方法来执行我们希望在Home Key事件中执行的任务时,会说“这在android中不支持”。奇怪!! – Varundroid 2011-04-30 17:53:28
@Varundroid:我一直在忘记那种方法。这并不重要,因为无论如何您都无法“退出应用程序”。当'onUserLeaveHint()'返回'true'或'false'时,我还担心一些 - 文档概括了两种情况,但还有更多。 – CommonsWare 2011-04-30 18:42:44
onUserLeaveHint()也会触发,如果你开始一个新的意图烦人 – 2012-01-16 15:11:26
在我的情况下,
我在申请 许多活动,所以如果我使用“onUserLeaveHint”,“的onStop”或...
它只是赶上活动的过渡。
所以我把下面的代码放在每一个活动中。 最后抓住用户的主页按钮动作。
第一,你有单独的对象
public class ActivityContext {
public static Context context = null;
}
和每一个活动,
@Override
protected void onStop(){ //onStop runs after New one's onResume
super.onStop();
if(ActivityContext.context==context) { //user home button out
AppStartEnd.sendAppEndData(context);
}
}
@Override
protected void onResume(){
super.onResume();
ActivityContext.context = YourActivity.this;
}
我希望这将有助于你
适用于我的应用程序:) – Hvn 2016-04-13 00:36:54
不管问题,你认为你解决这样可以更好地解决与其他技术。我还没有遇到主动销毁活动的正当理由,因为用户响应了“通知”。例如,如果您为了安全起见(例如强制登录),请根据时间进行操作。无论用户是按下HOME还是响应“通知”或任何应该没有方向的东西,不管用户是否将浏览器标签从Web应用程序切换开来,都应该使它们自动从Web应用程序注销。 – CommonsWare 2011-04-30 18:38:53
同样,如果因为用户返回活动而崩溃时主动销毁活动,请修正错误,而不是导致用户丢失上下文。而且,如果你有一个单一活动的应用程序,这是非常有用的,因为在Android中没有任何东西允许你“退出应用程序”。如果你觉得这在你的情况下仍然有点合理,我很乐意为你说服我。 – CommonsWare 2011-04-30 18:40:40
@CommonsWare我认为你是对的。我应该尝试找到其他选项来处理主键而不是销毁我的应用程序。谢谢你让我醒来。但我的问题很简单,当用户按Home键时,我的应用程序不会崩溃。其实问题出在我的主屏幕小部件上,因为每当我按下主键退出我的应用程序,然后如果我点击我的主屏幕小部件,它会在执行必要的任务后再次启动主要活动。 – Varundroid 2011-04-30 20:59:33