gpt4 book ai didi

java - 变量的值在远程进程中不会改变

转载 作者:行者123 更新时间:2023-11-29 05:49:40 26 4
gpt4 key购买 nike

所以,我有一项 Activity 和一项服务。服务做了很多挂起我的主应用程序线程的工作,所以我决定在远程进程中运行这个服务( list 中的远程)。尽管服务在主进程中工作时一切正常,但在远程进程中发生了一些奇怪的事情。

在我的服务的 onCreate 方法结束时,我将 SERVICE_RUNNING 变量的值设置为 true。 Log.d 上面的一行确认,它的值确实是 true。但是当我从我的 Activity 中调用静态方法 isRunning()(它返回 SERVICE_RUNTIME 的值)时,它返回 false。这是我的代码:

服务:

public class PlayService extends Service {
private static Boolean RUNNING = false;

@Override
public void onCreate() {
super.onCreate();
SERVICE_RUNNING = true;
Log.d("ctw", "onCreate() " + SERVICE_RUNNING); // "onCreate() true" in logcat
}

public static Boolean isRunning()
{
Log.d("ctw", "isRunning() " + SERVICE_RUNNING);
return SERVICE_RUNNING;
}
}

Activity :

if(PlayService.isRunning())
{
// executes when service is running and PlayService is not a remote process
} else {
// executes always when PlayService is a remote process
}

提前致谢!

最佳答案

您说您有单独的流程。所以每个进程都有自己的 PlayService 类加载和自己的 RUNNING 标志实例。您不能在不同进程之间通过静态变量共享数据。

在单独的线程中运行服务,而不是进程。

如果您真的想要使用不同的进程而不是使用 AIDL 与服务进行通信。

关于java - 变量的值在远程进程中不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com