我的应用程序关闭之前可以调用方法吗?

时间:2014-07-03 10:24:21

标签: android

以下是这种情况:

我想在每次应用程序到达前台时检查设备是否已植根(因为他们通过App Drawer重新启动应用程序或通过“最近的应用程序”列表返回应用程序)。此检查在onResume()期间完成,并且运行良好。

问题是目的是在应用程序到达前台时仅检查一次root,而不是在用户当前正在使用该应用程序时。由于onResume()在Activity到达前台时被调用,这意味着即使不需要也会多次执行检查,这会带来性能成本。

我想过使用一个静态变量来锁定它,在我执行检查之前锁定,以确保只调用一次检查。这很好,花花公子,但问题是什么时候解锁?

  1. 在另一个Activity聚焦之前调用onPause() 会否定锁定。我尝试使用isFinishing(),但如果是用户 按下后退按钮,活动被破坏,重置了 root检查锁定并使其不太合意。编辑:此外,如果用户按下主页按钮,活动仍未完成,这意味着它还不够可靠

  2. 不保证调用onStop()和onDestroy(),并且 如果用户按下后退按钮,也会调用它们。

  3. 当app移动到后台时,有没有办法只调用一次函数,而不受上面onPause()的限制?我搜索了活动,应用程序和BroadcastReceiver文档,但无法找到有关此类内容的任何提及

1 个答案:

答案 0 :(得分:0)

最后,我决定使用onUserLeaveHint(),自定义startActivity()和onBackPressed()来组合,使用一些私有静态和非静态变量

  1. 我使用onUserLeaveHint()来检测用户何时返回主页 或者到最近的应用列表。

  2. onBackPressed()用于告诉应用程序它用于 导航,而另一个onBackPressed()覆盖写在 应用程序入口点,用于检测用户何时使用后退按钮返回 到家(不能相信用户LeaveHint()没有考虑到这一点)

  3. 自定义startActivity()确保onUserLeaveHint()不是 在另一个活动开始时调用。虽然onUserLeaveHint()存在强制中断问题(例如用户接收呼叫),但现在认为它是可接受的。

  4. 我做了一些研究并找到了this blog,但它使用了onStop(),但不保证能够运行

    感谢所有回复。我理解对我的安全方法的担忧,但问题是关于检测用户何时离开应用程序

相关问题