是否有任何解决方法使Android服务每30秒运行一次(不是每1分钟一次)

时间:2016-01-11 02:30:34

标签: android android-activity

我制作了一个启动服务的Android应用程序。 我希望它每30秒运行一次。请不要担心电池,它不是一个公共使用的应用程序,它将在游戏正播的整个星期内仅运行3-4小时。

现在我面临的问题是,最初当应用程序启动并且服务启动时,它会按预期每隔30秒运行一次但是一旦手机被锁定或应用程序进入后台,那么android操作系统不会让它以较少的速度运行而不是每一分钟。它每60秒触发一次。

我知道这是android的限制。 我的问题是通过传递它或某些可以让它每30秒运行一次的技巧。

public static void startBTService() 
{
    Utilities.showDebugInfo("Start BT Service called...");

    if ( Utilities.getCurrentBTService() != null ) 
    {
        Utilities.showDebugInfo("BT Service already running...");
        Utilities.sendDataAckUI("BT Service already running...", false);
        Utilities.runJavascript("showBTServiceButtons(true);");
        return;
    }
    AlarmManager alarmManager = (AlarmManager)((Activity)Utilities.context).getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(Utilities.context, OnAlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(Utilities.context, 1111, intent, 0);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 30000, pendingIntent);
    Utilities.runJavascript("showBTServiceButtons(true);");
    Utilities.sendDataAckUI("BT Service started...", false);
}

请帮忙。

由于

1 个答案:

答案 0 :(得分:0)

使用AlarmManager时遇到了类似的问题。我使用的解决方案是在IntentService内排队的Timer。

            int delay = 1000 * 15; // delay for 15 sec.
            int period = 1000 * transmitInterval; // interval to send data
            timer = new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    transmitData();
                }
            }, delay, period);