![](/img/trans.png)
[英]How to create a background app (Service) to get the mobile data every 30 sec. The service must working in 24/7
[英]How to run background service after every 5 sec not working in android 5.1?
我需要每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限制。 希望能幫助到你...
在Android 5.1中,它們似乎設置了一個限制,其中低輪詢周期被四舍五入到60000毫秒(一分鍾)。 單獨留下高於60000ms的重復間隔。
對於計時操作(滴答,超時等),使用Handler
更容易,也更有效。
因此,如果你想實現你的目標,你必須使用處理程序在Android 5.1中執行此操作。
我沒有看到問題
要么讓服務一直運行,讓它等待5秒鍾b4正在處理新任務
或者你每隔一分鍾開始一個線程,它每隔5秒執行你想要的任務......並在一分鍾后停下來或許只是殺死,初始化它並立即啟動它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.