2012-07-08 19 views
5

मुझे परेशान है कि मैं अपनी सेवा से अपने वैश्विक चर का उपयोग क्यों नहीं कर सकता। मैं उन्हें अन्य गतिविधियों ठीक से उपयोग कर सकते हैं ....एंड्रॉइड ग्लोबल वैरिएबल सेवा में काम नहीं कर रहा है

वैश्विक वर वर्ग:

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" 
सेवा के लिए प्रकट परिभाषा

इसका मतलब है कि यह एक पूरी तरह से अलग प्रक्रिया चल रहा है। आप इस तरह स्थिर चर का उपयोग कर वैश्विक चर साझा नहीं कर सकते हैं।

यदि आपको एक अलग प्रक्रिया में चलाने के लिए अपनी सेवा की आवश्यकता नहीं है, तो बस "एंड्रॉइड: प्रक्रिया" रेखा को हटा दें और आप अच्छे होंगे।

+0

yup पोस्ट किया! वह काम किया। –

+0

धन्यवाद या तो बहुत कुछ! –

+0

उन्हें लोगों को चेतावनी दी जानी चाहिए, या मुझे sth याद आया। – guness

संबंधित मुद्दे