Android application ေတြကုိ develop လုပ္မယ္ဆုိရင္ data ေတြကို သိမ္းဆည္းမယ္ ျပီးရင္ လုိအပ္တဲ႔ေနရာကေန ျပန္ေခၚ ယူသုံးႏုိင္ဖုိ႔အတြက္ သိသင္႔တာေတြရွိပါေသးတယ္။ ဒါမွသာ Android platform ကေပးထားတဲ႔ Sample Application ကုိ ဖတ္ၾကည္႔ရင္ ဒါေၾကာင္႔ဒီလိုေရး ထားတာပါလား လုိ႔နမူနာယူၾကည္႔ႏုိင္မွာပါ။ Android ကေတာ႔ Open Source ေပးထားတာေလးေတြက တကယ္ရည္ရြယ္ခ်က္ေကာင္းပါတယ္။ ဥပမာ Searchable Dictionary လုိမ်ိဳးေတြ၊Note Pad ေတြ၊ soft keyboard ေတြ။ ဒါ႕အျပင္ Open source code ေတြခ်ျပ တင္ေပးထားတဲ႔ Android Game application ေတြေတာင္ေတြ႕မိပါေသးတယ္။ ဒါေၾကာင္႔ အခုေျပာမယ္႔ အေၾကာင္းအရာေတြနဲ႔ စျပီး အေျခတည္ေနတယ္လုိ႔ ဆုိၾကပါစုိ႔။ ဒီမွာ ဘာေတြ သိရမလဲဆုိရင္ ေတာ႔ 1. Shared Preferences : Activity တစ္ခုကေန တစ္ခုကုိ global state ေတြအကူးေျပာင္းလုပ္ဖုိ႔ (package တူတူအတြင္းမွာရယ္၊ package မတူရင္ေရာ) 2. file system: ကုိယ္႔ application ထဲမွာ custom file ေတြကုိထည္႔ထားတယ္ ျပီးရင္ ျပန္ထုတ္ၾကည္႔မယ္၊ စတာေတြ… 3. XML recourses file: ေတြကုိ အသုံးျပဳပုံေတြ 4. SD card: ထဲမွာ သြားျပီး သိမ္းဆည္းမွဳေတြလုပ္တာေတြ 5. Content provider: ကုိသုံးျပီး data ေတြ share တာေတြ 6. SQLite: ဆုိတဲ႔ relational database အသုံးျပဳနည္းေတြ ကုိေဆြးေႏြးသြားမွာပါ။ ေျပာရမွာေတြက မ်ားေတာ႔ အပုိင္းပုိင္းခြဲျပီး ေျပာဖုိ႔စီစဥ္ထားပါတယ္။ ျပီးမွ sample application ေတြေလ႔လာ။ ျပီးေတာ႔ ကုိယ္တုိင္ Demo ေလးေတြ ေရးၾကည္႔ၾကရေအာင္။ အခု ဒီ က်ဳတုိရီရယ္ေလးမွာ ေဖာ္ျပထားတာကေတာ႔ W.Frank Ableson, Charlie Collins, Robi Sen ရဲ႕ “A Developer’s Guide” စာအုပ္ထဲမွ ဆုိတာကုိလည္း ရည္ညႊန္းခ်င္ပါေသးတယ္။ ခုေရးထားတာေတြထက္ပုိျပီး သိတဲ႔လူမ်ားရွိရင္လည္း ညႊန္ျပေပးႏုိင္ၾကပါတယ္။ ကဲကဲ အစပ်ိဳးေနတာကုိ တခန္းရပ္လုိ႔ လုိရင္း ကုိသြားၾကပါစုိ႔။
1. Shared preferences ကုိအသုံးျပဳျခင္း
Android ထဲမွာ Activity တစ္ခုကေန Activity တစ္ခုကုိ ကူးတဲ႔အခါ တခ်ိဳ႕ေသာ global state ေတြကုိသိမ္းခ်င္တဲ႔အခါ SharedPreferences ဆုိတဲ႔ object ကုိသုံးတာက အသုံးတဲ႔တဲ႕နည္းတစ္ခုပါ။ ဒီေတာ႔ အဲ႔ဒီ preference object ထဲကုိ ဘယ္လုိ data ထည္႔မယ္ ျပန္ထုတ္မယ္ဆုိတာကုိ သိေအာင္လုပ္ၾကမယ္။ ပထမဆုံးတနည္းကေတာ႔ same package အတြင္းမွာ shared preferences ေတြသုံးတဲ႕နည္းပါ။ SharedPreferences object ကုိ ဘယ္ကေန တဆင္႔ သုံးရမလဲ ဆုိရင္ေတာ႔ ကုိယ္႔အခုအသုံးျပဳေနတဲ႔ Context ကေနတဆင္႔သုံးရမွာပါ။ သုံးပုံသုံးနည္းကေတာ႔ sharedpreferences object တစ္ခုလုိခ်င္ရင္ context.getSharedPreferences(String name,int accessMode); နဲ႔ေခၚပါ။ သူ႔ရဲ႕သေဘာက ေတာ႔ကုိယ္႔ရဲ႕ data ေတြကုိ auto xml file ေလးေဆာက္ျပီး သိမ္းထားေပးတာပါ။
အခုေျပာျပမွာကေတာ႔ same application package အတြင္းမွာ Activity တစ္ခုကေန တစ္ခုကုိ sharepreference နဲ႔ data သယ္သြားတဲ႔ပုံစံပါ။ အဲ႔ဒီလုိ႔ data သယ္ေပးတဲ႔ အခါမွာလည္း primitive data type (String, Long, Float, Boolean, Int) ေတြကုိဘဲ သယ္ေပးႏုိင္တာပါ(custom object ေတြမရပါဘူး)။
1. စစခ်င္း sharePreferences object တစ္ခုကုိ context ကေနတဆင္႔ create လုပ္
SharedPreferences myPrefs = this.getSharedPreferences(“myPrefs”,MODE_WORLD_READABLE);
2. sharedPrefrences ထဲကုိ data ေတြ ထည္႔ခ်င္ရင္ Editor ကေနတဆင္႔ထည္႔ရမွာပါ။ ဒီေတာ႔ Editor ကို ဒီလုိေၾကၿငာပါမယ္။
SharedPreferences.Editor presEditor = myPrefs.edit();
3. ျပီးရင္ေတာ႔ Editor ကေနတဆင္႔ primitive datatype ေတြထည္႔ႏုိင္ပါျပီ။
prefsEditor.putString(site,”www.myanmartutorial.com”);
prefsEditor.putString(user,”12345”);
prefsEditor.putString(like,”yes”);
4. ကဲထည္႔ခ်င္တဲ႔ data ေတြထည္႔ျပီးရင္ေတာ႔ အခုလုိ commit လုပ္လုိက္ပါ။
prefsEditor.commit();
အခုဆုိရင္ sharedPreferences object ထဲကုိ data ထည္႔ျပီးသြားပါျပီ။ ေနာက္ Activity ကေန ျပန္ေခၚခ်င္ရင္ေတာ႔ sharedPreferences object ေဆာက္ျပီး ျပန္ေခၚရမွာပါ။
SharedPreferences myPrefs = this.getSharedPreferences(“myPrefers”,MODE_WORLD_READABLE);
ဒီလုိမ်ိဳး getString() နဲ႔ျပန္ယူႏုိင္ပါျပီ။
String site=myPrefs.getString(site,null);
String site=myPrefs.getString(user,null);
အင္းဒီေလာက္ဆုိ နည္းနည္းသေဘာကုိသိသြားေလာက္ျပီထင္တယ္ေနာ္။ ဒါေၾကာင္႔ေအာက္မွာျပထားတဲ႔ အတုိင္း screen ႏွစ္ခုကို data ေလးကူးတဲ႔ Application ေလးေရးၾကည္႔ရေအာင္။
ဒီေတာ႔ screen တစ္ခုမွာ EditText View 4ခုနဲ႔ NextScreen ကုိသြားဖုိ႔ button တစ္ခုထည္႔ထားပါတယ္။ ေနာက္ screen မွာေတာ႔ အေရွ႕က screen ကေနရုိက္လုိက္တာကုိ ျပန္လက္ခံဖုိ႔ Text View 4 ခုထည္႔ထားတယ္ေနာ္။
SharedPrefTestInput.java တြင္
SharePrefTestOutput.java တြင္
SharedPreferences XML files ေတြကုိေတာ႔ /data/data/ကုိယ္႔packageName/shared_prefs ေအာက္မွာ XML file ေတြအေနနဲ႔သိမ္းေပးထားပါတယ္။ အေပၚကျပခဲ႔တဲ႔ က်ဴတုိရီရယ္မွာ စမ္းထားတဲ႔ sharePreferences ကုိ တကယ္ XML file create လုပ္မလုပ္ အခုလုိ adb shell ကေနသြားျပီးၾကည္႔ လုိက္ရင္ျဖင္႔ အခုကုိေတြ႕ႏုိင္မွာပါ။
Tips: cmd> cd myAndroid/tool/ > adb shell > cd data > cd data > cd mmTutorials.sharePreferences > cd shared_prefs > ls
ကုိယ္ create လုပ္လုိက္တဲ႔ Application တုိင္း (.apk) တုိင္းမွာ ကိုယ္ပုိင္ ID ရွိၾကပါတယ္။ ကုိယ္႔ရဲ႕ ဒီ sharedpreference ေတြကုိလည္း ဒီID နာမည္ကဘဲပုိင္ဆုိင္တာပါ။ ဒီ sharedpreference ထဲက data ကုိ တျခား package ကေနေခၚခ်င္ရင္ေတာ႔ outside ကေခၚႏုိင္တဲ႔ permission ကုိေပးရမွာပါ။ (eg. WORLD_READABLE). တျခား application ရဲ႕ sharedpreference ေတြကိုသိခ်င္၊ သုံးခ်င္ရင္ေတာ႔ တျခား application ရဲ႕ context ကုိသိမွရပါမယ္။
Coming soon after my exam: Using other application’s sharedpreferences
(ေမးျမန္းအၾကံျပဳခ်က္မ်ားကုိ ၾကိဳဆုိလ်က္)












ရွင္းၿပထားတာ အဆင့္ဆင့္ အလြန္ေကာင္းပါတယ္။ ဒါကိုနားလည္ဖို႔ ကိုယ့္ဟာကိုယ္ ေတာ္ေတာ္ စမ္းခဲ့ရဖူးတယ္။
ေနာက္လူေတြ ေလ့လာရလြယ္တာေပါ့။
Application ရဲ႕ activity က ေရးလိုက္တဲ့ Shared Preference တစ္ခုကို Home screen widget application (same package) ကေနဖတ္လို႔ရမရသိခ်င္ပါတယ္။ ဘယ္လိုစမ္းရမလဲ။
Something like in this way ?
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.html