我正在使用 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) {
我的问题是,如果我开始活动,然后按下手机上的电源按钮(关闭屏幕+锁定它),直到用户再次打开手机并解锁屏幕,事件才会传递。
我认为它与锁定屏幕有关(可能是因为屏幕被锁定,android 认为意图无论如何都不会做任何事情?) - 但我发现我的问题几乎没有信息。使用部分唤醒锁定,我希望 onActivityResult 被调用,无论我是否关闭屏幕,或者它是否被锁定 - 但显然情况并非如此。
谁能指出我错在哪里?