我需要每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();
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码确保在执行另一个作业之前完成一个作业,因此它更简洁.但是,如果您的要求不需要在执行另一个作业之前确保完成一个作业,则可以使用以下代码:
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
}
}
Run Code Online (Sandbox Code Playgroud)
最后,您可以通过调用startService()来启动服务; 来自您的活动主题.这样,您就绕过了AlarmManager限制.希望能帮助到你...
| 归档时间: |
|
| 查看次数: |
5663 次 |
| 最近记录: |