2012-07-27 116 views
0

我正面临着来自广播接收方的活动中的问题。ANDROID:活动在睡眠模式下被破坏

我的应用程序包含报警系统,所以当报警时间匹配的时候,广播接收者在前面调用一个活动。此活动不是全屏显示,它是使用RegionSearchDialog作为主题的一种警报框。 (不要被迷惑,我只使用活动,我的类继承的活动,但在XML中的主题设置为RegionSearchDialog)

我的开发平台是:4.0.4

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

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

所以,当报警时间匹配时,它会发出蜂鸣报警,如果它处于睡眠模式,那么用户可以解锁设备并看到该报警的弹出。

在此先感谢您的帮助。

+0

在这里,我找到了服务很好的例子 http://stackoverflow.com/questions/4300291/example-communication-between-activity-and-service-using-messaging – jitendra 2014-03-03 12:48:53

回答

1

这是Android中的活动应该工作的方式。您最好使用服务或使用Alarm manager在特定时间启动活动,因为这些更适合您尝试执行的操作=)。

0

这里是我的代码,我认为它可以帮助你: 在你的活动上创建():

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" /> 

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

-1

除了响应由“享受写作”:

  1. 它足以在我的Android应用程序,设置标志为在OnCreate代码描述。
  2. 效果是应用程序在进入睡眠模式时会暂停(例如通过按电话上的开/关按钮),并在从睡眠模式返回时恢复。
  3. 通过删除FLAG_KEEP_SCREEN_ON标志,您仍然可以让手机在睡眠状态下长时间不用。