【发布时间】:2016-03-27 17:19:42
【问题描述】:
我有一个应用程序,它应该是一个闹钟。如果我将警报时间设置为大约 5 分钟或 30 分钟,它会按原样响起,但如果我把它放在大约 4 小时后,它就不会响起,无论我的设备从未被触摸过(整晚),或者如果我使用定期(白天)。
在主要方法中我有这个Wackelock:
PowerManager powman = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock = powman.newWakeLock(PowerManager.FULL_WAKE_LOCK,"MyWakelockTag");
wakeLock.acquire();
然后我像这样打电话给我的AlarmReceiver:
Intent alarmIntent = new Intent(main.this, AlarmReceiver.class);
PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(main.this, 8932, alarmIntent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC_WAKEUP, AlertDate.getTime(), alarmPendingIntent);
最后我的AlarmReceiver 看起来像这样:
public class AlarmReceiver extends WakefulBroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
main.Alert(context);
}
}
我的清单在这里:
<uses-permission android:name="android.permission.WAKE_LOCK" />
...
<application
...
<receiver
android:name=".AlarmReceiver"
android:permission="android.permission.WAKE_LOCK">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
</application>
所以最简单的问题是:为什么main.Alert(context); 在很长一段时间后没有被调用?进程是否可能被Android OS 杀死?
【问题讨论】:
-
您是否有 WAKE_UP 权限来显示?并将 AlarmReceiver 声明为manifiest
-
是的,我都有 :) 我已经在上面的帖子中添加了它
标签: java android process android-wake-lock