簡體   English   中英

廣播接收器(TIME_TICK)每天晚上死嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM