2015-01-21 94 views
2

我想用在後臺無限期地運行下去,並調用的方法每10分鐘 甚至被殺應用如何每10分鐘在後臺運行服務?

其運行的服務如何建立呢?

+0

可能重複http://stackoverflow.com/questions/8230606/android -run-thread-in-service-every-x-seconds) – duggu 2015-01-21 08:19:04

+0

請問爲什麼?我問的原因是因爲Android很多次,你有多種方式來做同樣的事情。 – 2015-01-21 08:35:07

回答

0

假設你有一個正在運行服務

用戶AlarmManager每10分鐘運行一次服務

AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, YourService.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 600000, pi); // Millisec * Second * Minute 
    } 
+0

'RTC_WAKEUP'不適用於'服務'。您將不得不使用'WakefulBroadcastReceiver'來做到這一點 – NinjaCoder 2017-11-09 03:06:14

+0

請解釋一下,它是通過報警管理器啓動待定意圖並驗證並正常工作。但是自從最初在Android上發佈很多東西以來,它已經有2年了。 – 2017-11-09 05:07:43

0

你可以寫一個後臺服務: Running in a Background Service

,並啓動服務每10-11分鐘(的AlarmManager省電行爲的原因),或者確切時間(需要shedule每次下一次執行)與AlarmManager.setExact

例子:

private static PendingIntent createClockIntent(Context context) { 
     Intent intent = new Intent(context.getString(R.string.widget_broadcast_clock_update)); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 1, 
       intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     return pendingIntent; 
    } 

    public static void startClockAlarm(Context context) { 
     AlarmManager alarmManager = (AlarmManager) context 
       .getSystemService(Context.ALARM_SERVICE); 
     clockIntent = createClockIntent(context); 
     alarmManager.setRepeating(AlarmManager.RTC, 0, 
       600000, clockIntent); 
    } 
6

您可以通過如下

用做服務

這項服務將得到自動啓動即使應用程序被打死,並postdelayed將運行[服務的Android運行的線程每隔X秒](的

+2

使用Handler內部服務安全嗎? – ralphgabb 2017-03-17 05:42:50

+0

不適用於我,我可能會錯過什麼? – Binsoi 2017-09-22 02:37:54