我需要每5秒调用一次后台服务,但我在Android 5.1(Lollipop)中遇到问题:它会自动将间隔时间视为1分钟.
请帮我每5秒运行一次后台服务.
解决方法:
由于AndroID 5.1上的警报最小间隔为一分钟,因此您可以调整服务以每5秒重复一次作业:
public class MyService extends Service { @OverrIDe public IBinder onBind(Intent intent) { return null; } @OverrIDe public voID onCreate() { super.onCreate(); } @OverrIDe public voID onDestroy(){ super.onDestroy(); } @OverrIDe public int onStartCommand(Intent intent, int flags, int startID) { Thread t = new Thread(new Runnable() { @OverrIDe public voID run() { startJob(); } }); t.start(); return START_STICKY; } private voID startJob(){ //do job here //job completed. Rest for 5 second before doing another one try { Thread.sleep(5000); } catch (InterruptedException e) { e.printstacktrace(); } //do job again startJob(); }}
上面的代码确保在执行另一个作业之前完成一个作业,因此它更简洁.但是,如果您的要求不需要在执行其他作业之前确保完成一个作业,则可以使用以下代码:
public class MyService extends Service { @OverrIDe public IBinder onBind(Intent intent) { return null; } @OverrIDe public voID onCreate() { super.onCreate(); } @OverrIDe public voID onDestroy(){ super.onDestroy(); } @OverrIDe public int onStartCommand(Intent intent, int flags, int startID) { Thread t = new Thread(new Runnable() { @OverrIDe public voID run() { while(true){ startJob(); Thread.sleep(5000); } } }); t.start(); return START_STICKY; } private voID startJob(){ //do job here }}
最后,您可以通过调用startService()来启动服务;来自您的活动主题.这样,您就绕过了AlarmManager限制.希望能帮助到你…
总结以上是内存溢出为你收集整理的如何运行后5秒后无法在Android 5.1中运行后台服务?全部内容,希望文章能够帮你解决如何运行后5秒后无法在Android 5.1中运行后台服务?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)