2016-03-14 72 views
-1

如何使用Android API 23中的AlarmManager保持服務活着?在android api中保持活着服務api = <23

我需要每1分鐘更新我的方法。 這是我的服務:

public class ApplicationService extends Service { 

    @Override 
    public IBinder onBind(Intent paramIntent) { 
     return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.d(ApplicationService.class.getName(), "start"); 
     UpdateUtils updateUtils = UpdateUtils.getInstance(getApplicationContext()); 

     IntentFilter intentFilter = new IntentFilter(); 
     intentFilter.addAction(Intent.ACTION_DATE_CHANGED); 
     intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED); 
     intentFilter.addAction(Intent.ACTION_TIME_CHANGED); 
     intentFilter.addAction(Intent.ACTION_SCREEN_ON); 
     intentFilter.addAction(Intent.ACTION_TIME_TICK); 
     registerReceiver(new BroadcastReceivers(), intentFilter); 

     Utils utils = Utils.getInstance(getBaseContext()); 
     utils.loadApp(); 
     updateUtils.update(true); 
     return START_STICKY; 
    } 
} 
+0

你已經試過了哪些代碼? –

+0

你有沒有嘗試過調用startForeground(int,notification)? http://developer.android.com/reference/android/app/Service.html#startForeground(int,Android.app.Notification) –

+0

鏈接使用AlarmManager的代碼.. –

回答

0

對不起想不出明白你的問題,你爲什麼需要報警管理器來保持服務活着嗎?

服務始終在後臺運行。如果因殺害內存的限制,您可以通過在onBind它定義爲STICKY()方法


更新

,那麼你不想讓你的服務還活着問OS重新啓動它。我的意思是,你說的查詢方式令人困惑。我現在理解的是,你想在每個'xx'時間後執行一些操作。

您可以做以下事項: 使用setExact()方法AlarmManager。執行接收機onReceive()中所需的操作。作爲這個onReceive()中最後一步的一部分,再次使用setExact()方法。如果執行時間不準確,你也可以使用setRepeating()

+0

在android中棒棒糖服務將在輪到睡覺關屏 –

+0

第一篇文章更新請檢查 –

+0

更新了答案 –

0

如果您擔心的是應用程序被鎖定的情況,您是否嘗試過使用喚醒鎖?

http://developer.android.com/reference/android/os/PowerManager.html

+0

第一篇文章更新請檢查一下 –

+0

請嘗試使用http://developer.android.com/training/scheduling/alarms.html。 「它們在您的應用程序之外運行,所以即使您的應用程序未運行,即使設備本身處於睡眠狀態,您也可以使用它們來觸發事件或操作。」 –

相關問題