我很困惑为什么我无法从我的服务访问我的全局变量。我可以从其他活动中轻松访问它们....
全局变种类:
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>
**我刚刚根据这篇文章尝试过使用单例类。同样的麻烦:
答案 0 :(得分:17)
您的服务正在远程运行,因为您已经拥有:
android:process=":MyService"
在服务的清单定义中。
这意味着它正在运行一个完全独立的进程。您无法使用静态变量共享全局变量。
如果你不需要你的服务在一个单独的过程中运行,那么只需删除“android:process”行,你就会很好。