我需要每5秒调用一个后台服务,但在Android 5.1(棒棒糖)中遇到了问题:它自动将间隔时间视为1分钟。
请帮助我每5秒运行一个后台服务。
我需要每5秒调用一个后台服务,但在Android 5.1(棒棒糖)中遇到了问题:它自动将间隔时间视为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的限制。希望这有所帮助...
Handler
更容易且效率更高。因此,在Android 5.1中,如果您想实现目标,就必须使用Handler进行操作。我看不出有什么问题
要么让服务一直运行并等待5秒钟处理新任务
要么每分钟启动一个线程,每5秒钟执行您想要的任务...并在一分钟后停止,也许只需杀死、初始化新线程并立即启动它