2012-07-08 2 views
5

내 서비스에서 내 전역 변수에 액세스 할 수없는 이유가 당황했습니다. 나는 .... 잘 다른 활동에서 액세스 할 수 있습니다Android 글로벌 변수가 서비스에서 작동하지 않습니다.

글로벌 VAR 클래스

:

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

결과가 555

입니다 :이 테스트 코드를 사용

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

int test;  

public int getTest() 
{ 
    return test; 
} 

주요 활동 동일한 코드를 사용하는 다른 활동 :

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 - Global variables?

+0

공유 환경 설정을 사용하여 전달하십시오. 제대로 작동하는지 확인하십시오. –

+0

서비스가 로컬 또는 원격으로 실행 중입니까? –

+0

이것은 간단한 테스트 코드 일뿐입니다. 나는 커스텀 객체의 큰 배열을 전달하고있다. 만약 공유 된 환경 설정이 내가 틀렸다면 나를 교정 할 수 있을지 모르겠다. –

답변

16

: 서비스의 매니페스트 정의

android:process=":MyService" 

.

이것은 완전히 별개의 프로세스를 실행하고 있음을 의미합니다. 그런 식으로 정적 변수를 사용하여 전역 변수를 공유 할 수 없습니다.

서비스가 별도의 프로세스로 실행될 필요가 없다면 "android : process"행을 제거하면됩니다.

+0

yup를 게시했다! 효과가있었습니다. –

+0

정말 고마워요! –

+0

그들은 사람들에게 경고해야합니다. 그렇지 않으면 나는 sth을 놓쳤습니다. – guness

관련 문제