我制作了一个启动服务的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);
}
请帮忙。
由于
答案 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);