我正在为Android编写一个应用程序,当我退出或暂停应用程序时,我需要启动该服务。我该怎么办?在我的应用程序中,每次单击某个东西时,它都将转到另一个活动,因此我无法将startservice放入这些活动中的onpause。我该怎么办?
答案 0 :(得分:0)
在这里查看活动生命周期: http://developer.android.com/reference/android/app/Activity.html
Android启动新活动时不会退出活动,只是暂停活动。所以在onPause()中启动服务应该没问题。
答案 1 :(得分:0)
根据android生命周期,onPause()
方法将调用作为用户离开您的活动的第一个指示。它可能会离开或不离开。因此,根据您的要求,您可以startService.
但请确保不要在内部放置大量代码,因为这可能会影响用户体验。
答案 2 :(得分:0)
通过覆盖此方法,您可以检查您的应用是否为onPause或onDestroy
protected void onPause() {
Log.i("Status", "onPause");
super.onPause();
}
protected void onDestroy() {
Log.i("Status", "onDestroy");
super.onDestroy();
}
答案 3 :(得分:0)
当“活动”不再可见时,会调用onStop()
。但是我们还不能确定应用程序是否会被销毁,因为Android操作系统会在内部处理它。因此,请尝试按照以下步骤查找您的应用是否在background
中:
使用
获取正在运行的任务信息ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
如果任务列表不为空,请检查运行的tak是否属于您的应用。如果它属于,则返回true给调用函数,在那里可以启动服务;否则返回false
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName()))
{
return true;
}
修改:这可能会有所帮助: http://developer.android.com/reference/android/app/ActivityManager.html#getRunningAppProcesses