2011-04-30 71 views
3

我想知道如何在用户按下主页按钮时退出应用程序。Android - 当用户按主页按钮时如何退出应用程序?

据我所知,Home Button在后台移动正在运行的应用程序,并将Launcher进程放在前面。

我知道我可以使用完成(),但我不知道我应该叫它的位置,因为我不知道哪个函数会在用户按Home键时接到呼叫。

谢谢。

+2

不管问题,你认为你解决这样可以更好地解决与其他技术。我还没有遇到主动销毁活动的正当理由,因为用户响应了“通知”。例如,如果您为了安全起见(例如强制登录),请根据时间进行操作。无论用户是按下HOME还是响应“通知”或任何应该没有方向的东西,不管用户是否将浏览器标签从Web应用程序切换开来,都应该使它们自动从Web应用程序注销。 – CommonsWare 2011-04-30 18:38:53

+2

同样,如果因为用户返回活动而崩溃时主动销毁活动,请修正错误,而不是导致用户丢失上下文。而且,如果你有一个单一活动的应用程序,这是非常有用的,因为在Android中没有任何东西允许你“退出应用程序”。如果你觉得这在你的情况下仍然有点合理,我很乐意为你说服我。 – CommonsWare 2011-04-30 18:40:40

+0

@CommonsWare我认为你是对的。我应该尝试找到其他选项来处理主键而不是销毁我的应用程序。谢谢你让我醒来。但我的问题很简单,当用户按Home键时,我的应用程序不会崩溃。其实问题出在我的主屏幕小部件上,因为每当我按下主键退出我的应用程序,然后如果我点击我的主屏幕小部件,它会在执行必要的任务后再次启动主要活动。 – Varundroid 2011-04-30 20:59:33

回答

3

取决于你想要做什么,覆盖onUserLeaveHint可能是最好的选择:

http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()

这将让你的应用程序知道您的应用程序正在退出,因为用户选择切换应用程序(就像点击主页按钮或选择通知一样)。如果传入的电话(或类似)导致您的应用程序转到后台,此提示功能将会调用而不是,因为用户未启动该操作。

+1

谢谢。这正是我期待的。我不知道为什么CommonsWare在Android中提供这种方法来执行我们希望在Home Key事件中执行的任务时,会说“这在android中不支持”。奇怪!! – Varundroid 2011-04-30 17:53:28

+2

@Varundroid:我一直在忘记那种方法。这并不重要,因为无论如何您都无法“退出应用程序”。当'onUserLeaveHint()'返回'true'或'false'时,我还担心一些 - 文档概括了两种情况,但还有更多。 – CommonsWare 2011-04-30 18:42:44

+4

onUserLeaveHint()也会触发,如果你开始一个新的意图烦人 – 2012-01-16 15:11:26

1

在我的情况下,

我在申请 许多活动,所以如果我使用“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; 
} 

我希望这将有助于你

+0

适用于我的应用程序:) – Hvn 2016-04-13 00:36:54

相关问题