如何检查是否暂停或退出android应用程序
我目前正在为android编写一个应用程序,在退出或暂停应用程序时需要启动该服务。我该怎么办?在我的应用程序中,每次单击某个对象时,它都会转到另一个活动,因此我无法将startservice置于这些活动中的onpause。我应该怎么做?在这里查看活动生命周期:如何检查是否暂停或退出android应用程序,android,service,android-activity,Android,Service,Android Activity,我目前正在为android编写一个应用程序,在退出或暂停应用程序时需要启动该服务。我该怎么办?在我的应用程序中,每次单击某个对象时,它都会转到另一个活动,因此我无法将startservice置于这些活动中的onpause。我应该怎么做?在这里查看活动生命周期: 当你开始一个新的活动时,Android不会退出,它只是暂停活动。因此,在onPause()内启动服务应该没问题。根据android的生命周期,onPause()方法将调用,作为用户离开您活动的第一个指示。它可能离开,也可能不离开。因此,
当你开始一个新的活动时,Android不会退出,它只是暂停活动。因此,在onPause()内启动服务应该没问题。根据android的生命周期,
onPause()方法将调用,作为用户离开您活动的第一个指示。它可能离开,也可能不离开。因此,根据您的要求,您可以启动服务。
但请确保不要将繁重的代码放入其中,因为这可能会影响用户体验。通过覆盖此方法,您可以检查您的应用程序是否处于暂停或恢复状态
protected void onPause() {
Log.i("Status", "onPause");
super.onPause();
}
protected void onDestroy() {
Log.i("Status", "onDestroy");
super.onDestroy();
}
当活动不再可见时,它调用onStop()
。但我们仍然不能确定应用程序是否会因为Android操作系统内部处理而被销毁。因此,请尝试以下步骤来查找您的应用程序是否位于后台:
使用获取正在运行的任务信息
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
编辑:这可能会有帮助:但是如果我有几个活动呢?因为我只想在我不在应用程序中时启动服务。这意味着你想在没有可见ui?Ys时启动服务。因为在我的应用程序中,我希望保持更新位置。当我不在应用程序中时,我还希望获得位置更新。然后,您可以在onStop()
方法中启动服务,因为onDestroy()
不是启动服务的理想位置您是否将服务放在所有活动的onStop()中?我是否需要将此放在所有活动的onStop()中?既然我有几个活动,为什么不尝试创建一个main活动
,您可以覆盖它的onStop()
方法,并从此扩展所有其他活动。这样,您就不必为所有活动编写它。
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName()))
{
return true;
}