7

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

全局变量类:

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 - 全局变量?

4

1 回答 1

17

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

android:process=":MyService"

在服务的清单定义中。

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

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

于 2012-07-08T09:35:44.587 回答