0

我在从广播接收器调用的活动中遇到问题。

我的应用程序包含警报系统,所以当警报时间匹配时,广播接收器会调用一个活动来获得前面。此活动不是全屏的,它是一种使用 RegionSearchDialog 作为主题的警报框。(不要混淆,我只使用活动,我的类扩展活动,但 xml 中的主题设置为 RegionSearchDialog)

我的开发平台是:4.0.4

现在我的问题是:如果我的设备处于开启状态(解锁 keygurad),无论应用程序在前面还是在后面,它都可以正常工作。但是如果电源关闭(睡眠模式/设备被锁定),它将调用相同的活动,onCreate() 先调用然后 onResume(),然后它会调用 onPause(),因为我的设备处于睡眠模式。

我想保持该活动运行,不想让它睡觉。

因此,当闹钟时间匹配时,它会发出嗡嗡声警报,如果它处于睡眠模式,那么用户可以解锁设备并查看该警报的弹出窗口。

在此先感谢您对此的帮助。

4

3 回答 3

1

这就是 Android 中的活动应该工作的方式。您最好使用服务或使用警报管理器在特定时间启动活动,因为这些更适合您尝试做的事情 =)。

于 2012-07-27T13:03:52.357 回答
0

这是我的代码,我认为它可以帮助您: 在您的 create() 活动中:

 super.onCreate(savedInstanceState);
  final Window win = getWindow();
  win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
  | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
  win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
  | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
  setContentView(R.layout.main); 

主要的xml是:

<activity
android:name=".main"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar"

android:launchMode="singleInstance" 
android:excludeFromRecents="true"
android:taskAffinity=""
android:configChanges="orientation|keyboardHidden|keyboard|navigation" />

请在您的项目中测试这些代码。:)

于 2012-07-27T13:11:30.413 回答
-1

除了“享受写作”的回应:

  1. 在我的 android 应用程序中设置标志就足够了,如 onCreate 代码中所述。
  2. 效果是应用程序在进入睡眠模式时会暂停(例如通过按下手机上的开/关按钮),并在从睡眠模式返回时恢复。
  3. 通过删除 FLAG_KEEP_SCREEN_ON 标志,如果有一段时间不使用视图,您仍然可以让手机进入睡眠状态。
于 2013-06-12T13:00:08.413 回答