BroadcastReceiver(TIME_TICK)每晚都会死?

时间:2013-10-07 12:26:58

标签: java android time broadcastreceiver alarmmanager

我想为体育网络服务写一些背景 - 现场 - 自动收报机应用... 我希望我的应用程序能够一直调用TIME_TICK。

顺便说一句:我也试过使用AlarmManager,但问题是一样的。

但现在我的问题......

我使用带有服务的Receiver来执行部分。 注册后,每分钟都会正确调用接收器。 但每天晚上服务终止,永远不会再被召唤。

在Android 2.x上一切正常但Android 4.x每天都会停止接收器...... 有没有可能让Android 4.x保持应用程序活着?

Reveiver已在我的主要活动中注册:

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

1 个答案:

答案 0 :(得分:0)

  

我也试过使用AlarmManager,但问题是一样的

AlarmManager是比ACTION_TIME_TICK好得多的答案,特别是如果您让用户配置轮询频率(包括“从不轮询,请选择,因为我喜欢我的电池和带宽使用情况”)保持低位“)。

请随时提出一个单独的StackOverflow问题,询问您遇到的任何问题。

  

但每天晚上服务终止,永远不会再被召唤

Android可以并且可以随时根据用户请求或年龄终止您的流程。

  

清单条目:

<receiver>毫无意义,如you cannot register for ACTION_TIME_TICK via the manifest