gpt4 book ai didi

android - AlarmManager 将 Activity 从 Sleep 中唤醒,但 Activity 异常关闭

转载 作者:太空狗 更新时间:2023-10-29 12:48:10 34 4
gpt4 key购买 nike

我有一个 AlarmManager 设置闹钟:

Intent intent = new Intent(mContext, AwakeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, PENDING_INTENT_ID, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(mContext.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + futureTime, pendingIntent);

并且警报按预期工作。当闹钟响起时,我打开了 AwakeActivity。这也按预期工作。在 AwakeActivity 中我有:

@Override
public void onCreate(Bundle savedInstanceState)
{
// main
super.onCreate(savedInstanceState);

// inflate
setContentView(R.layout.awake);

Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); //relates to IInputConnectionWrapper issue - but not cause of instant close of app
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

这是我的 list 定义:

<activity 
android:name=".AwakeActivity"
android:label="@string/activityAwake"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.NoTitleBar"
android:screenOrientation="portrait"
android:launchMode="singleInstance"
android:noHistory="true"
>
</activity>

我遇到的问题是,当 AwakeActivity 启动时,它不会保持打开状态。它立即关闭。但是......只有当手机处于 sleep 模式时才会发生这种情况,如果我让屏幕保持打开状态并且 AwakeActivity 通过闹钟打开 - 一切都很好。

另一个但是......是这发生在我运行 2.3.4 的 Droid X 而不是我的 Galaxy Nexus 4.2.2 上。我已经这样做了一段时间,感觉好像我做得很好。

我在这里错过了什么?有什么想法吗?

最佳答案

我自己也遇到了类似的问题。在某些设备上,设备会唤醒,而在其他设备上, Activity 会关闭。您是否尝试过使用 WakeLock 来查看是否会发生同样的事情?

因此声明一个全局唤醒锁变量:

PowerManager.WakeLock wakelock;

在您的 onCreate 方法中执行如下操作:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK
| PowerManager.ON_AFTER_RELEASE, "tag");
wakelock.acquire();

现在你只需要释放唤醒锁,在你的 onPause 方法中说:

@Override
protected void onPause() {
super.onPause();
wakelock.release();
}

您还需要将此包含在您的 list 文件中:

<uses-permission android:name="android.permission.WAKE_LOCK"/>

关于android - AlarmManager 将 Activity 从 Sleep 中唤醒,但 Activity 异常关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706018/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com