我正在使用Android AlarmManager在特定时间接收活动。
alarm_manager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm_manager.set(AlarmManager.RTC_WAKEUP, target_time, pending_intent);
挂起的意图是这样创建的:
pending_intent = createPendingResult(PENDING_INTENT_ID, new Intent(), 0);
为了在手机关机时触发闹钟,我获得了部分唤醒锁:
power_manager = (PowerManager)getSystemService(POWER_SERVICE);
wake_lock = power_manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getString(R.string.app_name));
wake_lock.acquire();
事件在onActivityResult回调中处理:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
我的问题是,如果我开始活动,然后按手机上的电源按钮(关闭屏幕+锁定它),直到用户再次打开手机才会发送事件,并解锁屏幕。
我认为它与锁定屏幕有关(可能是因为屏幕被锁定,安卓认为意图无论如何都不会做任何事情?) - 但我发现我的问题几乎没有信息。使用部分唤醒锁定,无论是否关闭屏幕,或者它是否被锁定,我都希望调用onActivityResult - 但显然情况并非如此。
有人能指出我哪里错了吗?
答案 0 :(得分:0)
有人回答,但由于某种原因,答案消失了,否则我会接受它。
答案基本上是那个
pending_intent = createPendingResult(PENDING_INTENT_ID, new Intent(), 0);
不可靠,建议使用广播接收器。我仍然不知道为什么他们不工作(我评论答案询问他们是否知道更多),但无论如何。我写了
broadcastReceiver = new AlertBroadcastReceiver(this);
registerReceiver(broadcastReceiver, new IntentFilter("SomeAction"));
并添加了一个广播接收器来处理这个问题,这很有效。