这个问题已经被问喜欢百倍运行,但所有我能罚有使用检查,如果我的应用程序在后台
getRunningAppProcesses()
相同的答案不上棒棒堂
正常工作所以它有一个完全可靠的方法来知道我的应用程序是否在背景中活着?
谢谢
编辑:
这就是我用它来检查,如果在前台应用程序:使用
喜好:
public static void setStartingActivity(Context context, boolean isStartingActivity) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean("isStartingActivity", isStartingActivity).apply();
}
public static boolean isStartingActivity(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("isStartingActivity", false);
}
public static void setAppRunningInForeground(Context context, boolean isRunning) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean("AppIsRunningInForeground", isRunning).apply();
}
public static boolean isAppRunningForeground(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("AppIsRunningInForeground", false);
}
开始活动:
Utility.PreferencesManager.setStartingActivity(getApplicationContext(), true);
startActivity(new Intent(getApplicationContext(), MainActivity.class));
调用OnStop和在onStart实现:
@Override
protected void onStart() {
super.onStart();
Log.e("Debugging", "MainActivity onStart");
Utility.PreferencesManager.setAppRunningInForeground(getApplicationContext(), true);
}
@Override
protected void onStop() {
super.onStop();
Log.e("Debugging", "MainActivity onStop");
if (!Utility.PreferencesManager.isStartingActivity(getApplicationContext()))
Utility.PreferencesManager.setAppRunningInForeground(getApplicationContext(), false);
else
Utility.PreferencesManager.setStartingActivity(getApplicationContext(), false);
}
您是否尝试过[onPause](https://developer.android.com/guide/components/activities/activity-lifecycle.html#onpause) – Derek
我认为这是寻找的内容:http:// stackoverflow。 com/questions/30619349/android-5-1-1-and-above-getrunningappprocesses-returns-my-application-packag –
通常,无论您在此尝试完成什么,都有更好的解决方案。你打算如何处理关于你是处于前景还是背景的信息? – CommonsWare