[英]BroadcastReceiver (TIME_TICK) dies every night?
我想為體育網絡服務編寫某種后台實時運行的應用程序...我希望我的應用程序能夠一直調用TIME_TICK。
順便說一句:我也嘗試使用AlarmManager,但是問題是一樣的。
但是現在我的問題...
我將帶有服務的接收器用於執行部分。 注冊后,接收器每分鍾都會正確調用一次。 但是每天晚上該服務都會終止,並且永遠不會再被調用。
在Android 2.x上,一切正常,但Android 4.x每天都會停止Receiver ...是否有可能使該應用在Android 4.x上保持活動狀態?
收款人已在我的主要活動中注冊:
registerReceiver(new MyReceiver(), new IntentFilter(Intent.ACTION_TIME_TICK));
清單條目:
<service android:name="de.pepdev.MyService" />
<receiver android:name="de.pepdev.MyReceiver">
<intent-filter>
<action android:name="android.intent.action.TIME_TICK" />
</intent-filter>
</receiver>
接收器類:
public class MyReceiver extends BroadcastReceiver
{
public static long nextExecTime = 0;
public static Calendar currentTime = Calendar.getInstance();
@Override
public void onReceive(Context context, Intent intent)
{
currentTime = Calendar.getInstance();
if(nextExecTime <= currentTime.getTimeInMillis())
{
Intent service = new Intent(context, MyService.class);
context.startService(service);
}
}
}
我也嘗試使用AlarmManager,但是問題是一樣的
與ACTION_TIME_TICK
相比, AlarmManager
是一個更好的答案,特別是如果您讓用戶配置輪詢頻率(包括“請不要輪詢,因為我希望電池和帶寬使用保持較低水平”的選項)時尤其如此。
關於您遇到的任何問題,請隨時詢問一個單獨的StackOverflow問題。
但是每天晚上服務都會終止,永遠不會再被調用
Android可以並且將在任何時候根據用戶請求或由於年齡原因終止您的流程。
清單條目:
<receiver>
是毫無意義的,因為您無法通過清單注冊ACTION_TIME_TICK
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.