从后台服务打开应用程序屏幕并锁定手机屏幕时冻结
Posted
技术标签:
【中文标题】从后台服务打开应用程序屏幕并锁定手机屏幕时冻结【英文标题】:App screen is freezes when It is opened from background service and phone screen is locked 【发布时间】:2021-12-11 12:25:04 【问题描述】:我在收到通知时从后台打开我的应用程序。为此,我正在使用一项服务。每当我的应用程序处于后台并收到新通知时,应用程序都会自动打开。它工作正常。 但是当应用程序在后台并且手机屏幕被锁定时,现在当通知来时,它会显示在屏幕上(锁定屏幕),当用户打开手机锁时,我的应用程序的屏幕将可见但屏幕无响应,屏幕颜色也会像灰色的布局就可以了。
要打开我正在使用服务的应用程序,代码是:
Intent serviceIntent = new Intent(getApplicationContext(), NewTaskService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
startForegroundService(serviceIntent);
else
startService(serviceIntent);
在 NewTaskService 类中,我正在打开我的应用程序。
附加了锁屏通知打开应用时的屏幕图像。
【问题讨论】:
【参考方案1】:似乎应用程序在主线程上做了很多工作。为什么不尝试在多线程中推送代码或使用在后台处理所有内容的异步类
【讨论】:
我已经在使用后台服务,它涉及到 UI 功能,因此我无法使用后台线程。顺便说一句,谢谢。 @FaizanAhmad 后台服务仍然在 UI 线程上运行。如果你想卸载,你需要在你的服务中实际运行一个线程。如果你的 UI 功能需要这么长的处理时间,那么你就是在设计错误。【参考方案2】:基本上,这是由于一个对话框。当应用程序打开并且用户解锁移动屏幕时,对话框消失但屏幕是可见的,就像有一个对话框一样。屏幕没有冻结或卡住,由于该对话框,屏幕也呈灰色。
因为在这种情况下对话框视图消失了。
【讨论】:
以上是关于从后台服务打开应用程序屏幕并锁定手机屏幕时冻结的主要内容,如果未能解决你的问题,请参考以下文章
如何在Android中保持kivy服务在后台运行(切换到其他应用程序或锁定屏幕时服务仍然运行)?
每次从后台恢复应用程序时都会打开启动屏幕,如WhatsApp指纹屏幕