【问题标题】:ANDROID : Activity gets destroy in sleep modeANDROID:活动在睡眠模式下被破坏
【发布时间】:2012-07-27 12:48:24
【问题描述】:

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

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

我的开发平台是:4.0.4

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

我想保持该活动运行,不想让它进入睡眠状态。

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

在此先感谢您帮助我。

【问题讨论】:

标签: android android-activity broadcastreceiver


【解决方案1】:

这就是 Android 中的活动应该工作的方式。您最好使用 Service 或使用 Alarm manager 在特定时间启动 Activity,因为这些更适合您尝试做的事情 =)。

【讨论】:

    【解决方案2】:

    这是我的代码,我认为它可以帮助你: 在您的 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" />
    

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

    【讨论】:

      【解决方案3】:

      除了'enjoy-writing'的回应:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多