【问题标题】:Variable's value doesn't change in remote process变量的值在远程进程中不会改变
【发布时间】:2013-01-18 19:45:16
【问题描述】:

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

在我的服务中的 onCreate 方法结束时,我将 SERVICE_RUNNING 变量的值设置为 true。 Log.d 上面的一行确认,它的值确实是 true。但是当我从我的活动中调用静态方法 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
}

提前致谢!

【问题讨论】:

    标签: java android process


    【解决方案1】:

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

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

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

    【讨论】:

    • 好吧,所以我将在 PlayService 类中使用 AsyncTask。感谢您指出!
    • 您也可以使用IntentService,从而在单个工作线程上处理所有请求
    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多