【发布时间】:2019-01-01 12:29:48
【问题描述】:
我希望每 n 分钟启动一次服务。这有效,但前提是应用程序正在运行(在屏幕上处于活动状态或处于非活动状态,最小化)。当我关闭它时(点击右下按钮并滑动到一侧),服务停止启动。
设置闹钟(MainActivity.onStart):
Intent startServiceIntent = new Intent(this, LogSyncService.class);
PendingIntent alarmIntent = PendingIntent.getService(this, 0, startServiceIntent, 0);
AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(),
5 * 1000, // low for testing purposes
alarmIntent);
AndroidManifest.xml:
<service
android:name=".LogSyncService"
android:description="@string/logSyncService_description"
android:exported="false"/>
通过查看警报转储 (adb shell dumpsys alarm),我可以清楚地看到,即使应用程序关闭(唤醒次数正在增加),警报仍然有效,但没有调用服务,因为它是该应用程序已打开。当我手动重新打开应用程序时,一切正常。
我该如何解决这个问题?
【问题讨论】:
-
请看这个链接,希望对你有帮助:- stackoverflow.com/questions/30525784/…
-
你的接收器是什么样的?不是代码,是 xml
-
您是在 android marshmallow 还是更高版本上进行测试?
-
@DroiDev 什么接收者?
-
@Benjamin 是的,奥利奥。
标签: android alarmmanager android-alarms repeatingalarm