【发布时间】:2012-03-29 10:48:45
【问题描述】:
大家好,我正在使用这种方法来检查我的应用是否在后台:
public static boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
for( RunningTaskInfo rti: tasks ) {
ComponentName cn = rti.topActivity;
LogHelper.i(TAG, "Component Name: " + cn.getPackageName() );
}
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
我在我的 Activity onPause、onStop、onDestroy 中调用此方法 这是我的结果:
当我在我的活动中并单击 android-home-button 时,它遵循以下流程:
onPause -> 在后台?真的 onStop -> 在后台?真的
这一切都很完美。 问题是当我单击 android-back-button 时,活动会返回到 android 主页。这是流程:
onPause -> 在后台?错误的 onStop -> 在后台?错误的 onDestroy -> 在后台?假的
如果您检查代码,我有一个 Log cat 标记,它总是(在后退按钮的情况下)标记这个:
03-29 00:46:39.324:I/DFFramework(15344):MusicUtils - 组件名称:my-activity-name
这意味着我的活动不在后台。 我能做什么?
更新:
我正在添加有关我的场景的更多信息。我正在开发一个音乐播放器,所以如果应用程序关闭但音乐仍在播放(否则音乐将暂停),我必须捕捉这种事件以启动我的前台音频服务。 所以我必须捕捉应用程序何时处于后台(例如当您单击 android-home-button 时)或当您关闭应用程序时(例如当您单击 android-back-button 时)。
【问题讨论】:
标签: android