मेरे पास एक लॉगिन सत्र आईडी है जिसमें कई गतिविधियों का उपयोग करने की आवश्यकता है। मैं इस सामान्य डेटा को कई गतिविधियों के बीच कैसे साझा करूं? वर्तमान में, मैं इरादे में डेटा पास कर रहा हूं लेकिन यह ठीक से काम नहीं कर रहा है। कुछ गतिविधियों के लिए, मैं कुछ अन्य डेटा पास करता हूं, और आम डेटा खो जाता है।एकाधिक गतिविधियों के बीच समान डेटा कैसे साझा करें
उत्तर
- सामान्य डेटा साझा करने के लिए Application class का उपयोग करें।
- Use Shared Prefrences or databases or some sort of persistant storage.
आप विवरण नीचे के अनुसार SharedPreferences का उपयोग करना चाहिए, http://developer.android.com/guide/topics/data/data-storage.html#pref
उपयोग साझा इस तरह प्राथमिकताएं:
SharedPreferences myprefs= getSharedPreferences("user", MODE_WORLD_READABLE);
String session_id= myprefs.getString("session_id", null);
:
SharedPreferences myprefs= this.getSharedPreferences("user", MODE_WORLD_READABLE);
myprefs.edit().putString("session_id", value).commit();
आप इस तरह अपने app भर में यह जानकारी प्राप्त कर सकते हैं जब आप अपनी वर्तमान गतिविधि से दूसरी गतिविधि शुरू करना चाहते हैं तो आपको इरादों का उपयोग करना चाहिए ... अगर बच्चे की गतिविधि कुल है y माता पिता गतिविधि से डेटा ... पर निर्भर उपयोग उद्देश्य
मुझे पता है कि वास्तव में कोड आप के साथ काम कर रहे हैं है नहीं है, लेकिन आप इस
अपने वर्तमान गतिविधियों मेंतरह की कोशिश की है, कोई लक्ष्य
बनानेIntent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra(key, value);
startActivity(i);
फिर दूसरी गतिविधि में, उन मानों को पुनर्प्राप्त करें।
Bundle extras = getIntent().getExtras();
if(extras !=null) {
String value = extras.getString(key);
}
साझा करने के लिए सिंगलटन कक्षा का उपयोग करें।
नमूना कोड
public class Category {
private static final Category INSTANCE = new Category();
public String categoryName = "";
public int categoryColor = 0;
public boolean status = false;
// Private constructor prevents instantiation from other classes
private Category() {}
public static Category getInstance() {
return INSTANCE;
}
}
अन्य गतिविधि/क्लास में
के रूप में मूल्य स्थापित करने के लिए:
Category cat;
cat=Category.getInstance();
cat.categoryName="some name";
cat.status=ture;
for getting the values every where you want in your application.
Category cat;
cat=Category.getInstance();
String sq=cat.categoryName;
boolean stat=cat.status;
तरीका है कि मुझे क्या करना है कि मैं गतिविधि से एक वैश्विक वर्ग का विस्तार, और तब सभी का विस्तार है वास्तविक गतिविधियां जो उपयोगकर्ता इसके साथ बातचीत करेंगे। इस तरह मैंने कुछ खरीदे "एंड्रॉइड के लिए कोड सीखना" किताबें खरीदीं।
हालांकि यह एप्लिकेशन क्लास का उपयोग करने जैसा है।
स्मृति रिसाव के बारे में क्या? आप डेटा कैसे साझा करते हैं? – Nico
SharedPreferences के बारे में दस्तावेज़ पढ़ने के बाद और लगभग Singleton vs Application in android के बारे में चर्चा करने के लिए लगभग।
मैं निष्कर्ष: किसी भी निष्कर्ष खंडन कृपया
- SharedPreferences: अच्छा अगर आप केवल पुरातन रखने के लिए योजना है, और विभिन्न पार्सल रखने के लिए आसान।
- पार्सलबल: बहुत कम बॉयलरप्लेट कोड के साथ एक निम्न स्तर का समाधान, आप Extras
- सेरिअलाइज़ेबल में उपयोग कर सकते हैं: यदि आप पार्ससेल के साथ परेशान नहीं करना चाहते हैं। this
सिंगलटन: मेरी पसंद देखें। सरल, त्वरित और कोई बॉयलरप्लेट नहीं। मेरा योगदान लचीलापन के लिए अंदर एक मानचित्र का उपयोग करना है।
public class Config { private static Config instance; private HashMap<String, Object> map; /*Keep doc about keys and its purpose if needed*/ public static final String TOKEN = "token"; public static final String SESSION = "sessionId"; /** A bean with A LOT of useful user info */ public static final String USER_BEAN = "userBean"; private Config() { map = new HashMap<String, Object>(); } public static final Config getInstance() { if (instance == null) { instance = new Config(); } return instance; } public void setKey(String key, Object value) { map.put(key, value); } public Object getKey(String key) { return map.get(key); } }
आवेदन: सिंगलटन के रूप में लगभग एक ही है, लेकिन कुछ छिपाने करने वाली मुझे कारण के लिए, परीक्षण और काम करने के लिए और अधिक एंड्रॉयड Standarized तरह से कम।
आप इसे साझा किए गए संदर्भों में या सिंगलटन कक्षा में स्टोर कर सकते हैं। जहां मैं सिंगलटन कक्षा का उपयोग करने का सुझाव दूंगा।
- SharedPreferences:
लिखें मूल्य
SharedPreferences mPref= this.getSharedPreferences("session", MODE_WORLD_READABLE);
mPref.edit().putString("session_id", your_session_value).commit();
पढ़ें मूल्य
SharedPreferences mPref= getSharedPreferences("session", MODE_WORLD_READABLE);
String sSession_id= mPref.getString("session_id", null);
सिंगलटन वर्ग
public class Session { private static Session session = null; private String mSessionId; private Session() { } public static Session getInstance() { if (session == null) { session = new Session(); } return session; } public String getSessionId() { return mSessionId; } public void setSessionId(String pSessionId) { this.mSessionId = pSessionId; } }
लिखें से सिंगलटन
Session mSession = Session.getInstance();
String mSessionId = mSession.getSessionId();
- 1. गतिविधियों के बीच डोमेन ऑब्जेक्ट्स साझा करना
- 2. गतिविधियों और सेवाओं के बीच डेटा साझा करना
- 3. गतिविधियों के बीच एक वस्तु साझा करना
- 4. एंड्रॉइड में गतिविधियों के बीच साझा वरीयता तक कैसे पहुंचे?
- 5. उपयोगकर्ता नियंत्रण के बीच डेटा साझा करें
- 6. कोर डेटा - एकाधिक धागे के बीच एनएसएमएनेज्ड ऑब्जेक्ट्स साझा करना
- 7. डेटा साझा JVM के बीच
- 8. एकाधिक जावा अनुप्रयोगों के बीच कनेक्शन पूल कैसे साझा करें
- 9. आईफोन अनुप्रयोगों के बीच कस्टम डेटा कैसे साझा करें?
- 10. गतिविधि और विजेट के बीच डेटा कैसे साझा करें?
- 11. ग्रहण: एकाधिक परियोजनाओं के बीच साझा कोड
- 12. एंड्रॉइड गतिविधियों के बीच स्वाइप करें ViewPager
- 13. एकाधिक सेवाओं (एकाधिक थ्रेड के साथ प्रत्येक सेवा) के बीच एक लॉगफाइल साझा करें, कैसे करें?
- 14. कई गतिविधियों के साथ एंड्रॉइड साझा प्राथमिकताएं
- 15. एकाधिक गतिविधियों पर Admob?
- 16. डेटा के समान "स्टोर" कैसे करें?
- 17. विभिन्न एंड्रॉइड गतिविधियों के बीच डेटा (ऑब्जेक्ट्स) का आदान-प्रदान कैसे करें?
- 18. App.config कैसे साझा करें?
- 19. मैं इसे पुनरारंभ किए बिना गतिविधियों के बीच एक सेवा कैसे साझा कर सकता हूं?
- 20. एकाधिक गतिविधियों के साथ एंड्रॉइड ऐप
- 21. एंड्रॉइड ऐप में सभी गतिविधियों के बीच डेटाबेस कनेक्शन साझा करने के लिए एक सेवा बनाना?
- 22. एकाधिक गतिविधियों के बीच एक एंड्रॉइड सेवा से कैसे जुड़े रहें?
- 23. अक्षम संक्रमण एनीमेशन गतिविधियों के बीच
- 24. क्या थ्रेडपूल एप्लिकेशन डोमेन के बीच साझा किया जाता है?
- 25. PHP और ASP.net एप्लिकेशन के बीच सत्र कैसे साझा करें?
- 26. Azure उदाहरणों के बीच राज्य कैसे साझा करें?
- 27. उपयोगकर्ताओं के बीच ग्रहण परियोजना प्राथमिकताओं को कैसे साझा करें?
- 28. Linq मूल्यों को प्राप्त एकाधिक सूचियों के बीच साझा नहीं
- 29. सी ++, प्रक्रियाओं या धागे के बीच डेटा साझा करने के लिए कैसे करें
- 30. डेटा बिंदुओं के बीच अंतर कैसे करें?
क्या आप वास्तव में पास करना चाहते हैं सिंगलटन को
पढ़ें? और अपना कोड यहां पोस्ट करें –
आप या तो इरादे के माध्यम से डेटा साझा कर सकते हैं या आप 1 ग्लोबल क्लास बना सकते हैं और उस के माध्यम से डेटा एक्सेस कर सकते हैं ... इरादे के माध्यम से डेटा भेजना बहुत आसान है .. आपको केवल अपना डेटा intent.putExtra में रखना है (उपयुक्त डेटाटाइप) विधि और इसे कई गतिविधियों पर साझा करें ... – android
मैंने अपने आवेदन में लॉगिन किया है कि मुझे सत्रिक मिल जाएगा, मुझे लॉगिन के बाद आने वाली सभी गतिविधियों में इसका उपयोग करने की ज़रूरत है, मुझे भी अगली गतिविधियों में कुछ अन्य डेटा पास करने की आवश्यकता है (सत्रीय समेत)। अब मैं इरादे से कोशिश कर रहा हूं लेकिन यह कभी-कभी अन्य गतिविधियों में बदल रहा है। – Harish