当其他应用程序弹出时,Android应用活动停止

时间:2017-01-26 14:20:54

标签: android android-activity

我在我的应用中遇到了一些活动的问题 - 这是一款游戏。游戏本身有2项活动 - Player1Players2。在此活动中,如果出现来自其他应用程序的弹出窗口(例如Whatsapp),活动将关闭,最后一个活动将打开(例如,在我的应用程序中,名为ChooseLevelChooseGameType的活动。

我认为这与我的onStoponPause方法有关,我将finish();称为这些活动。 我应该更改哪一个弹出窗口不会关闭活动?因为我确实希望它在应用程序不再显示在屏幕上时关闭,但是当弹出窗口出现时停留。

3 个答案:

答案 0 :(得分:1)

onPause()onStop()之间有一个整洁但关键的区别。来自activity docs

<强>的onPause():

  

系统即将开始恢复上一个活动时调用。这通常用于将未保存的更改提交到持久数据,停止动画以及可能消耗CPU等的其他事情。此方法的实现必须非常快,因为在此方法返回之前,下一个活动将不会恢复。   如果活动返回到前面,则后跟onResume();如果用户不可见,则返回onStop()。

<强>的onStop():

  

当活动不再对用户可见时调用,因为另一个活动已恢复并且正在覆盖此活动。这可能是因为正在开始新活动,现有活动被带到这个活动之前,或者这个活动正在被销毁。   如果此活动返回与用户交互,则执行onRestart(),如果此活动消失,则执行onDestroy()。

因此,您有两种情况需要决定如何继续使用您的应用。如果您不希望在其他finish()完全覆盖您的应用的情况下在您的应用上拨打Activity,例如Dialog,那么您必须删除finish()拨打onPause()

答案 1 :(得分:0)

您的错误必须在onPause(),因为当应用不再处于前台时,该方法始终在Android中调用。因此,如果有来自其他应用程序的活动,例如WhatsApp,则会调用onPause()。因此,要避免关闭您的应用,请从那里删除finish();来电。

答案 2 :(得分:0)

问题在于onPause()方法,您调用了finish()。当显示另一个应用程序时{} {}将被确认,因为您的应用实际上处于暂停状态。正如其他用户已经指出的那样,避免拨打onPause()。此外,在finish()方法中调用finish()也是一种不好的做法,毫无意义。