首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前台服务和WakeLocks不适用于华为设备

问前台服务和WakeLocks不适用于华为设备
EN

Stack Overflow用户
提问于 2020-01-13 05:24:10
回答 3查看 1.5K关注 0票数 3

我开发了一个名为Multi倒计时的Android应用程序,我们可以同时启动多个计时器。该应用程序使用前台服务在后台运行,以便持续运行,并覆盖安卓Doze模式。

我已经在三星s6、A7、诺基亚3.1、LG Nexus 5x和一些仿真器上测试了我的应用程序。应用程序运行完美,当计时器完成时醒来。但另一方面,每当我在华为设备上运行我的应用程序(EMU8AndroidOreo8.0.0)时,结果都是不令人满意的。我面临的问题是,当计时器完成时,应用程序没有唤醒屏幕,当我打开设备时,它会响,但它不会自动唤醒屏幕,因为它正在其他设备上工作。

我复制了这个应用程序多定时器StopWatch,这个应用程序甚至在华为设备上运行良好。

这是我在Manifest.xml的活动。

代码语言:javascript
复制
           android:name=".view.alarm.AlarmActivity"
           android:process="alarm.process"
           android:screenOrientation="portrait"
           android:showOnLockScreen="true"
           android:showWhenLocked="true"
           android:turnScreenOn="true"
           android:theme="@style/splashScreenTheme" />

我就是这么叫我的警报活动的。

代码语言:javascript
复制
val alarmIntent = Intent(this@CountDownTimerForegroundService, AlarmActivity::class.java)
    alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    alarmIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT)
    }
    alarmIntent.putExtra(ALARM_PASSING_ID, timerObj.id)
    startActivity(alarmIntent)

这是我的报警活动onCreate

代码语言:javascript
复制
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        window.addFlags(
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    or WindowManager.LayoutParams.FLAG_FULLSCREEN
                    or WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
        )

        setContentView(R.layout.activity_alarm)

任何帮助都将不胜感激。提前谢谢。

更新:

( 1)在华为设备上,我在PowerManager上发布了我的应用程序后进行了测试,还启用了电池优化功能,但这也没有帮助我。

2)我在前台服务中测试过一些唤醒锁,但仍然有相同的行为。

3)使用安卓AlarmManager和setExactAndAllowWhileIdle仍然没有唤醒设备。

( 4)使用不要杀解决方案在唤醒锁中使用不要杀标签也没有帮助。

EN

回答 3

Stack Overflow用户

发布于 2020-04-26 17:11:28

华为的EMUI有相当严格的电池管理政策。除了电池管理中的权限外,后台还有一个单独的由EMUI管理的白名单。

请参考我在那里的答案;https://stackoverflow.com/a/61364065/5245066

票数 0
EN

Stack Overflow用户

发布于 2020-05-26 07:13:09

华为设备不支持前台服务和唤醒(保持后台运行)使手机始终在后台运行,方法很simple.The,方法是:点击进入需要运行的软件→进入指定位置→直接退出→,使软件仍在运行不会影响您对其他软件的操作。手机的配置越高,后台运行的软件就越多。

票数 0
EN

Stack Overflow用户

发布于 2020-07-10 17:07:18

因为他们有自己的电池管理算法。由于华为的EMUI有非常严格的电池管理政策。因此,每当您运行前台服务时,它都会破坏它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59710956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档