2017-04-26 74 views
0

我只是Android的新手,请大家多多帮助。我试图使用JobServicecom.firebase.jobdispatcher.JobService在我的Android应用程序,但据我研究,我看到JOB服务运行在主线程和只要应用程序运行在后台或forground它一直在做它的时间表工作。在Android中不断运行JobService - 即使应用程序死亡

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

  1. 如果我运行一个棘手的服务它不给我安排
  2. 如果我使用招聘服务它给调度但作为终止应用 关闭。

有没有什么办法可以运行一个即使在应用程序被终止后也能运行的服务,还可以执行任务计划?

回答

0

可以使用AlarmManagerlink 创建服务器类:

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); 
+0

非常感谢你,它的工作!!!!但我想知道我的相同代码没有在华为p9lite(API 24)上做任何调度,而且在Qmobile S5(API 21)上进行了相同的代码调度。可能的原因是什么? –

+0

这是关于api 23+的后台服务政策,以保护用户免受可能会损耗电池和网络的服务。请检查解决方案:) –

相关问题