【发布时间】:2018-07-04 21:47:24
【问题描述】:
我想在后台操作状态栏(例如颜色)。我正在使用前台服务来执行此操作。因此没有窗口,因为它在后台发生,特别是没有活动。但是,函数
public abstract void setStatusBarColor (int color)
被抽象类Window调用:https://developer.android.com/reference/android/view/Window.html
因为它是抽象的,所以我无法启动它,也无法使用 getWindow(),因为我没有实现活动类。 以下答案使用活动。还有其他方法可以实现吗? How to change the status bar color in android
【问题讨论】:
-
你的意思是后台进程的后台线程,对吧?进程与线程有些不同。 developer.android.com/guide/components/… 您可以使用在 UI 线程上实例化的处理程序并从后台线程发布可运行的对象,并使用处理程序的 handleMessage() 方法在 UI 线程上更改颜色。
-
特别是我正在使用前台服务。服务不是线程。 @Thracian 抱歉造成误会。
-
没关系。您仍然可以将 Handler 与 Service 一起使用,或者将 BroadcastReceiver 与 Service 一起使用并在 Activity 中侦听。 stackoverflow.com/questions/9092134/…
-
@Thracian 我确实在使用带有服务的广播接收器,但是在活动中收听是什么意思?你能给我一个例子吗?我实际上是在 React-native 中编写我的应用程序,但正在使用他们提供的本机模块来实现一些本机代码。是否可以在 onReceive 函数中操作状态栏?
-
我在 onReceive 中添加了我的代码,状态栏颜色发生了变化,但只有当应用程序处于前台时,当它被发送到后台时,颜色才会消失。
标签: android statusbar android-windowmanager android-statusbar android-window