BroadcastReceiver (TIME_TICK) dies every night?

女生的网名这么多〃 提交于 2019-11-30 20:50:12

问题


I want to write some kind of background-live-ticker app for sports-web-services... I would like my app to be able to call the TIME_TICK all the time.

Btw: I also tried to use the AlarmManager, but the problem is the same.

But now my problem...

I use a Receiver with a Service for the execution part. The Receiver is called every minute correctly after register. But every night the service is terminated and will never be called again.

On Android 2.x everything works fine but Android 4.x will stop the Receiver every day... Is there any posibility to keep the app alive on Android 4.x?

The Reveiver is registered in my Main-Activity:

registerReceiver(new MyReceiver(), new IntentFilter(Intent.ACTION_TIME_TICK));

Manifest-entries:

<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>

Receiver-class:

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);
        }
    }
}

回答1:


I also tried to use the AlarmManager, but the problem is the same

AlarmManager is a far better answer than ACTION_TIME_TICK, particularly if you let the user configure the polling frequency (including an option for "never poll, please, as I like my battery and bandwidth usage to stay low").

Please feel free to ask a separate StackOverflow question regarding whatever problems you feel your are experiencing with it.

But every night the service is terminated and will never be called again

Android can and will terminate your process at any point, either by user request or due to old age.

Manifest-entries:

The <receiver> is pointless, as you cannot register for ACTION_TIME_TICK via the manifest.



来源:https://stackoverflow.com/questions/19224905/broadcastreceiver-time-tick-dies-every-night

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!