在我的应用程序中有一个广播接收器,在特定的时间由RTC_WAKEUP的闹钟调用。该接收器首先获取部分锁定,以便它不会终止,然后检查条件,如果它是真实的,则启动一个活动,通过获取完全锁定和解锁键盘锁,完全打开手机。WakeLock Mechanism
经过一些测试和试用后,我发现广播接收机的生命周期在开始活动之前结束,并且一旦它结束,部分锁定被释放。
所以我想如果该设备是睡眠,将在活动开始这样 它可以获取全锁?
或者只要广播接收器结束设备就会回到 睡眠和活动的开始推迟到它再次醒来时?
在我的应用程序中有一个广播接收器,在特定的时间由RTC_WAKEUP的闹钟调用。该接收器首先获取部分锁定,以便它不会终止,然后检查条件,如果它是真实的,则启动一个活动,通过获取完全锁定和解锁键盘锁,完全打开手机。WakeLock Mechanism
经过一些测试和试用后,我发现广播接收机的生命周期在开始活动之前结束,并且一旦它结束,部分锁定被释放。
所以我想如果该设备是睡眠,将在活动开始这样 它可以获取全锁?
或者只要广播接收器结束设备就会回到 睡眠和活动的开始推迟到它再次醒来时?
如果你想开始在广播接收器的活动,不要忘记添加标志:FLAG_ACTIVITY_NEW_TASK
public void onReceive(Context context, Intent i) {
if (check condition) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(context,THE_ACTIVTY_YOU_WANT_TO_START.class);
context.startActivity(intent);
}
}
使用FULL_WAKE_LOCK以武力打开屏幕,在onCreate()方法中添加以下代码来执行此操作。
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
kl = km.newKeyguardLock("info");
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "info");
kl.disableKeyguard();
,同时期待通过GCM手册我发现下面的章节:
http://developer.android.com/google/gcm/gcm.html#handling_intents
我认为你必须将收购的激活锁定,同时还在广播接收器#的onReceive之中。他们在IntentService中使用静态WakeLock。
我认为你的应用程序被设计为在特定的时间启动一个活动,就像本机闹铃一样,不是吗? – Huang
@黄是的,这是一个提醒,但我想在开始活动之前检查简单的离线状况。是否有任何源代码可用于检查警报活动?我找不到一个。我想看看我是否做对了。 – Ali