出现以下刷屏输出:
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
W/ActivityManager( 823): getTasks: caller 10079 does not hold REAL_GET_TASKS; limiting output
频率很快,10079不是ps后得到的进程号。
adb shell dumpsys package | grep -A1 "userId=10079"
>userId=10079 gids=[3003, 1028, 1015]
>pkg=Package{88b2a3d com.dynamicode.service}
发现问题所在。
在Android API 21的Logcat输出存在一个Bug没有解决,就会出现上述的刷屏问题,
当调用一下代码时就会出现这个问题:
/*
* 判断当前App处于前台还是后台状态 需要添加权限 <uses-permission
* android:name="android.permission.GET_TASKS" />
*/
public static boolean isApplicationBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
想要解决这个问题,我在这里加入了版本检查:
- if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP);
- <uses-permission android:name="android.permission.GET_TASKS" />