在Android-Even应用程序中不断运行JobService

时间:2017-04-26 14:17:14

标签: android firebase service background

我只是android的新手,请帮助一下。我正在尝试在我的Android应用程序中使用 JobService com.firebase.jobdispatcher.JobService ,但据我研究,我看到JOB SERVICE在主线程上运行应用程序在后台或前台运行时,它会继续执行其日程安排。

但问题是我想做的事情即使应用程序从应用程序托盘中删除,也可以在每30分钟后获取用户位置。我对以下几点感到困惑

  1. 如果我运行粘性服务,则不会给我安排
  2. 如果我使用Job Service,它会提供计划,但会在应用程序结束时终止 闭合。
  3. 有没有办法运行一个即使在应用程序被杀死后运行的服务也可以执行计划任务?

1 个答案:

答案 0 :(得分:0)

您可以使用AlarmManager link 创建您的服务器类:

public class MService extends IntentService {
    public MyTestService() {
       super("MService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
       // Your firebase task
    }
}

然后你的广播

public class MReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Intent in = new Intent(context, MService.class);
    context.startService(in);
  }
}

终于

Intent intent = new Intent(getApplicationContext(), MReceiver.class);
final PendingIntent pIntent = PendingIntent.getBroadcast(this, MReceiver.REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT);
long firstMillis = System.currentTimeMillis();
AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, firstMillis, AlarmManager.INTERVAL_HALF_HOUR, pIntent);