Android全局变量在服务中不工作

Android全局变量在服务中不工作,android,global-variables,Android,Global Variables,我很困惑为什么我不能从我的服务中访问我的全局变量。我可以通过其他活动访问它们,很好 全局变量类: public class Global extends Application { private static final String TAG = "Global Class"; int test; public int getTest() { return test; } 我使用此测试代码的主要活动: Global appState = ((Global)getAppl

我很困惑为什么我不能从我的服务中访问我的全局变量。我可以通过其他活动访问它们,很好

全局变量类:

public class Global extends Application {
private static final String TAG = "Global Class";

int test;     

public int getTest()
{
    return test;
}
我使用此测试代码的主要活动:

Global appState = ((Global)getApplication()); //Context());
appState.setTest(555);
Log.e("SETTEST",new Integer(appState.getTest()).toString());
结果是555

另一个活动我使用相同的代码:

Global appState = ((Global)getApplication()); //Context());
Log.e("SETTEST",new Integer(appState.getTest()).toString());
结果是555

最后,在我的服务中,我使用与上面相同的代码:

Global appState = ((Global)getApplication()); //Context());
Log.e("SETTEST",new Integer(appState.getTest()).toString());
而我得到了又大又胖的0

请帮忙。到目前为止,我已经花了3个小时在这上面了。 我尝试过使用getApplication和getApplicationContext

此外,清单如下所示:

...
<application android:icon="@drawable/signal" android:label="@string/app_ name" android:name="<absolute path>.util.Global">


<service
    android:name=".util.MyService"
    android:process=":MyService" 
    android:icon="@drawable/airplane"
    android:label="@string/service_name"
    >
</service>
。。。

您的服务正在远程运行,因为您有:

android:process=":MyService"
在服务的清单定义中

这意味着它正在运行一个完全独立的进程。您不能以这种方式使用静态变量共享全局变量


如果您不需要在单独的进程中运行服务,那么只需删除“android:process”行,您就会很好。

尝试使用共享首选项传递它们。我希望它能起作用。您的服务是在本地运行还是远程运行?发布服务的清单这只是简单的测试代码。我正在传递大量的自定义对象……我不确定共享prefs是否是纠正我的错误的方法,如果我的问题不正确,那么它是在本地运行的(至少我认为是这样)。我发布了入口,他们应该警告人们,否则我错过了什么。我有这个问题,这完美地解决了它。在多进程中运行应用程序有什么好处?@EspeH我们使用多个进程来绕过旧设备上单个进程的内存限制。通过跨多个进程拆分应用程序,我们可以使用更多内存。此外,如果分割应用程序,您可以获得健壮性的度量,因为如果一个部分崩溃,另一个部分将继续运行。这只是两个示例,说明了为什么您可能需要使用多个流程。