我实际上正在使用此代码来检查 onPause 中的应用程序是否进入后台。
public static boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService( Context.ACTIVITY_SERVICE );
List<RunningTaskInfo> tasks = am.getRunningTasks( 1 );
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get( 0 ).topActivity;
String name = LockScreenActivity.class.getName();
String topAPN = topActivity.getPackageName();
String conAPN = context.getPackageName();
if (topActivity.getClassName().equals( name ) || !topActivity.getPackageName().equals( context.getPackageName() )) {
return true;
}
}
return false;
}
到目前为止,这段代码在 Android 4.4 上运行良好。如果现在我检查它们是否相等(topAPN
并且conAPN
当应用程序发送到 android <= 4.3 的后台时它们总是不相等)。
你知道如何解决这个问题吗?有什么改变吗?