編輯:關於Android編程
作為一個完成的應用程序,數據存儲操作是必不可少的,因此,Android系統提供了四種數據儲存方式,分別是:SharedPreference、File、SQLite以及Content Provider。由於Android系統中,數據基本都是私有的,都是存放於data/data/程序包名目錄下,所有要實現數據共享,正確方式使用Content Provider。
SQLite:SQLite是一個輕量級的數據庫,支持基本SQL語法,是常被采用的一種數據存儲方式。Android為此數據庫提供了一個名為SQLiteDatebase的類型,封裝了一些操作數據庫的API。
SharedPreference:除SQLite數據庫外,另一種常用的數據存儲方式,其本質就是一個xml文件,常用於存儲較簡單的參數設置。
File:即常說的文件(I/O)存儲方式,常用存儲大量數量的數據,但是缺點是更新數據將是一件困難的事情。
ContentProvider:Android系統中能實現所有應用程序共享的一種數據存儲方式,由於數據通常在各應用間的互相私密的,所有此存儲方式較少使用,但是其又是必不可少的一種存儲方式。例如音頻、視頻、圖片和通訊錄,一般都可以采用此種方式進程存儲。每個ContentProvider都會對外提供一個公共的URI(包裝成Uri對象),如果應用程序有數據需要共享,就需要使用ContentProvider為這些數據定義一個URI,然後其他應用程序就通過Content Provider傳入這個URI來對數據進行操作。
SharedPreference:是一種輕型的數據存儲方式,它的本質是基於XML文件存儲key-value鍵值對數據,通常用來保存一些簡單的配置信息。其存儲位置在data/data/程序包名/shared_prefs目錄下。SharedPreference對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。
SharedPreference對象與SQLite數據庫相比,免去了創建數據庫、創建表、寫SQL語句等諸多操作,相對而言更加方便、簡潔。但是SharedPreference也有其自身缺陷,比如其職能存儲boolean、int、float、long和String五種簡單的數據類型,比如其無法進行條件查詢等。所有無論SharedPreference的數據存儲操作是如何簡單,它也只能是存儲方式的一種補充,而無法完全替代如SQLite數據這樣的其他數據存儲方式。
SharedPreference存儲方式操作步驟:
一、根據Context獲取SharedPreference對象
調用Context對象的getSharedPreference()方法,該方法獲得的SharedPreference對象可以被同一個應用程序下的其他組件共享調用Activity對象的getPreference()方法,該方法獲得的SharedPreference對象只能在該Activity中使用 二、利用SharedPreference對象中的edit()方法獲得Editor對象 三、通過Editor對象存儲key-value鍵值對數據 四、通過Editor對象的commit()方法提交數據
例子:——通過點擊TextView,來獲取SharedPreference保存的數據
AndroidManifest.xml——沒有做任何修改,創建工程默認
activity_main.xml
MainActivity.java
package com.example.sharedpreferencedemo; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; public class MainActivity extends Activity { private TextView textView; private SharedPreferences sharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*1、獲取SharedPreference對象,此參數一hello指定了保存的文件名稱*/ sharedPreferences = getSharedPreferences(hello, MODE_PRIVATE); /*2、存入數據,可以存入多種類型數據,數據通過key鍵值標記對應數據*/ Editor editor = sharedPreferences.edit(); editor.putString(string, hello world.); editor.putInt(int, 10); editor.putBoolean(boolean, true); /*3、提交數據*/ editor.commit(); textView = (TextView)this.findViewById(R.id.textView); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub //如果鍵值不存在,則返回第二個參數的數據 String string = sharedPreferences.getString(string, ) + +sharedPreferences.getInt(int, 0) + +sharedPreferences.getBoolean(boolean, false); textView.setText(string); textView.setTextSize(20); } }); } }下載程序:
當運行此程序後,數據就保存在/data/data/com.example.sharedpreferencedemo/shared_prefs/hello.xml文件中。進入Window->Show View->Other->Androd->File Explorer
下查看文件
點擊File Explorer對話框中的右上角第一個按鈕從收據將hello.xml文件導出到電腦中,可查看其內容
內容如下:
程序測試:——點擊TextView,獲取SharedPreference保存的數據
Drawable animation可以加載Drawable資源實現幀動畫。AnimationDrawable是實現Drawable animations的基本類。&nb
最近工作中,遇到了幾個內存優化的問題,1.應用退出後,此應用進程保持了不少內存得不到釋放,用工具強制gc也無法釋放。2.應用進入某些頁面瞬間請求分配內存過大。此兩個問題對
計算每個線程的下載起始終止位置公式如下文件讀寫方式4中類型工程源碼目錄package cn.itcast.download;import java.io.File;imp
在drawable文件夾中建立如下旋轉動畫文件 android:drawable=@drawable/loading1 android:p