所以,我有一项活动和一项服务。服务正在做很多工作,挂起我的主应用程序的线程,所以我决定在远程进程中运行此服务(:远程在Manifest中)。虽然服务在主进程中工作时一切正常,但在远程进程中会发生奇怪的事情。
在我的服务中的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;
}
}
的活动:
if(PlayService.isRunning())
{
// executes when service is running and PlayService is not a remote process
} else {
// executes always when PlayService is a remote process
}
提前致谢!
答案 0 :(得分:3)
你说过你有不同的流程。因此,每个进程都加载了自己的PlayService类,并拥有自己的RUNNING标志实例。您无法通过不同进程之间的静态变量共享数据。
在单独的线程中运行服务,而不是处理。
如果您真的想要使用不同的进程而不是使用AIDL与服务进行通信。