編輯:關於Android編程
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences( getString(R.string.preference_file_key),Context.MODE_PRIVATE);
上面的代碼是在一個Fragment中調用的,getActivity()是獲取Fragment所在的Activity對象(Activity是繼承自Context),R.string.preference_file_key是該SharedPreferences的名字,mode是Context.MODE_PRIVATE私有類型。 注意:當你給SharedPreferences起名字的時候最好是復雜點的,這樣就能保證不會有名字重復卻屬於不同應用程序的SharedPreferences,最好是以你的應用包名再加上其他構成,比如"com.example.myapp.PREFERENCE_FILE_KEY"。 獲取一個Activity的SharedPreferences代碼如下: SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 上面是創建了一個Activity私有的SharedPreferences對象。 注意:當你創建SharedPreferences時mode值的是MODE_WORLD_PRIVATE或者MODE_WORLD_WRITEABLE,你創建的Shared Preferences文件是可以被其他應用程序訪問的。這兩種mode都是比較危險的,因為其他應用程序也能訪問,所以會造成數據外洩。google給出的建議是盡量不要用這種機制來進行數據共享傳遞,可以用其他方法來代替這種機制,比如使用ContentProvider,BroadcastReceiver或者Service。 寫入數據到Shared Preferences文件: 寫入數據到Shared Preferences是通過獲取SharedPreferences.Editor對象,調用該對象的一些putXX(key,value)方法來寫入key對應的值,然後調用commit()方法提交寫入完成的,代碼如下:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score), newHighScore); editor.commit();
SharedPreferences.Editor對象的putXX(String key,數據類型)方法可以保存boolean、int、float、long、String和Set<String>類型的數據,但是put方法只是建立好鍵值對的數據聯系,並沒有保存,直到你調用commit()或者apply()方法。調用remove(String key)可以清除key對應的數據(還需要調用commit方法提交操作),你也可以調用clear()方法把所有數據清除掉。 注意:commit()和apply()都是提交對數據的操作,但是它們還是有些區別的: 1、commit方法有返回值,返回值是一個boolean變量,表示你的保存動作是否成功,apply是沒有返回值的,所以如果你不需要返回值,也不關心提交是否成功可以用apply來代替commit; 2、apply是先把數據更改提交到內存,然後再異步保存到磁盤上,而commit這兩個操作是同步的,所以在進行頻繁提交數據更改時apply更為高效; 讀取數據從Shared Preferences文件: 從Shared Preferences文件讀取之前保存的數據比較簡單,通過SharedPreferences對象的getXX方法就能完成,代碼如下:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.string.saved_high_score_default); long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
SharedPreferences的getXX(String key, defValue)方法key就是之前調用SharedPreferences.Editor的put(String key,數據類型)方法時的key,defValue是在找不到對應的key的數據時返回的默認數據。 總結: 保存數據分四步: 1、獲取SharedPreferences對象; 2、獲取SharedPreferences.Editor對象; 3、調用put方法添加數據; 4、調用commit保存數據; 獲取數據很簡單,分兩步: 1、獲取SharedPreferences對象; 2、調用get方法獲取key對應的值; 以上就是利用SharedPreferences進行數據保存的知識,基本上包含了所有使用SharedPreferences的方法和注意事項,有哪些地方寫的不好還請大神們批評指正。
內存映射文件原理首先說說這篇文章要解決什麼問題? 1.虛擬內存與內存映射文件的區別與聯系. 2.內存映射文件的原理. 3.內存映射文件的效率. 4.傳統IO和內存
應用的耗電是個長期持續優化的事情,而且隨著Android系統的不斷更新,系統本身也提供了越來越詳細的信息來輔助統計分析耗電。這裡基於Android 6.0介紹一些耗電分析
線程的運行機制 1. 開啟線程過多,會消耗cpu2. 單核cpu,同一時刻只能處理一個線程,多核cpu同一時刻可以處理多個線程3. 操作系統為每個運行線程安排一
Android基礎入門教程——8.3.15 Paint API之——Typeface(字型)標簽(空格分隔): Andro