因此,当应用程序通过在其他地方找到的这个 hack 进入后台时,我们的应用程序正在处理:
public static boolean isAppGoingToBackground(Context context)
{
boolean retVal = false;
ActivityManager mgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = mgr.getRunningTasks(1);
if (!runningTasks.isEmpty())
{
// If the package name of the current activity doesn't equal the context's
// package name, then the user is no longer in the context's app.
ComponentName currentActivity = runningTasks.get(0).topActivity;
retVal = !currentActivity.getPackageName().equals(context.getPackageName());
}
return retVal;
}
但是,如果通过电源按钮关闭屏幕,这将无法处理,因此我们为该事件添加了一个广播接收器:
_receiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction() == Intent.ACTION_SCREEN_ON)
{
//resume
}
else if(intent.getAction() == Intent.ACTION_SCREEN_OFF)
{
handleAppGoingToBackground(_context);
}
}
};
但是,当用户使用任务切换器使应用程序后台运行时,这些都没有给出正确的响应:
如果以这种方式后台应用程序,isGoingToBackground 将返回 false。我希望广播接收器中有另一个事件可以用来处理这个事件,但我没有找到任何东西。无论如何,当它以这种方式后台运行时,您的应用程序中有什么要知道的吗?