pga*_*iga 13 android foreground broadcastreceiver
我正在申请,每晚需要进行同步.我使用Alarm Manager在我想要的时刻调用BroadcastReceiver.问题是如果应用程序在前台运行以避免丢失数据,我就无法进行同步.所以我需要在广播接收器中知道应用程序是否在前台运行以取消此同步.
我尝试了在StackOverflow中找到的解决方案: 检查Android应用程序是否在后台运行 但是此参数在BroadcastReceiver中始终为false,但在activites中为true.
谁能告诉我哪个是问题?我做得不好?
真的感谢!
Bir*_*dia 13
试试这种方式希望这适合你
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (isAppForground(context)) {
// App is in Foreground
} else {
// App is in Background
}
}
public boolean isAppForground(Context mContext) {
ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(mContext.getPackageName())) {
return false;
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
添加此权限
<uses-permission android:name="android.permission.GET_TASKS" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11744 次 |
| 最近记录: |