




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Android開發(fā)知識點Android開發(fā)環(huán)境的搭建(androidstudio+gradle+jdk1.8)Android框架Android四大組件:Activity、Service、ContentProvider、BroadcastReceiverUI及基本布局數據存儲:SharedPreferences、文件、SQLite數據庫、網絡Android網絡通信volley,xutils,fjFrameforandroid,hessian,okhttp等其它:NDK,adb、HierarchyView、DDMS、draw9patchAndroid入門基礎培訓一、Android框架Android入門基礎培訓Android入門基礎培訓1.Aplications(應用層)應用是用Java語言編寫的云新在虛擬機上的程序。2.ApplicationFramework(應用框架層)這一層是編寫Google發(fā)布的核心應用時所使用的API框架,開發(fā)人員可以使用這些框架來開發(fā)自己的應用。ViewSystem:可以用來構建應用程序,它包括列表、網格、文本框、按鈕以及
可嵌入的Web瀏覽器。ContentProviders:它可以讓一個應用訪問另一個應用的數據,或共享它們自己
的數據。ResourceManager:提供非代碼資源的訪問,如本地字符串、圖形和布局文件。NotificationManager:應用可以在狀態(tài)欄中顯示自定義的提示信息。ActivityManager:用來管理應用程序生命周期并提供常用的導航退回功能。WindowManager:管理所有的窗口程序。PackageManager:Android系統(tǒng)內的程序管理。Android入門基礎培訓3.Libraries、AndroidRuntime(系統(tǒng)運行庫層)當使用Android應用框架時,Android系統(tǒng)會通過一些C/C++庫賴支持我們使用的各個組件,使其能更好地為我們服務。Bionic系統(tǒng)C庫:C語言標準庫,系統(tǒng)最底層的的庫,C庫通過Linux系統(tǒng)來調用。多媒體庫(MediaFramework):Android系統(tǒng)多媒體庫,基于PackerVideoOpenCORE,該庫支持多種常見格式的音頻、視頻的回放和錄制,以及圖片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。
SGL:2D圖形引擎庫。
SSL:位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數據通信提供支持。
OpenGLES1.0:3D效果的支持。
SQLite:關系數據庫。
Webkit:Web瀏覽器引擎。
FreeType:位圖(bitmap)及矢量(vector)。在Android操作系統(tǒng)中,每個Java程序都運行在Dalvik虛擬機上,其只能執(zhí)行.dex的可執(zhí)行文件,當Java程序通過編譯后,最后還需要通過SDK中的dx工具轉為成.dex格式才能正常在虛擬機上執(zhí)行,Java虛擬機運行的是Java字節(jié)碼,而Dalvik虛擬機運行的則是其專有的文件格式dex(DalvikExceutable)的文件。
Dalvik虛擬機有幾個主要特征:專有的dex文件格式、dex的優(yōu)化,dex文件的結構是緊湊的、基于寄存器、一個應用,一個虛擬機實例,一個進程。每一個Android應用度運行在一個Dalvik虛擬機實例中,每一個虛擬機實例都是一個獨立的進程空間Android入門基礎培訓4.LinuxKernel(Linux內核層)顯示驅動(DisplayDriver):基于Linux的幀緩沖(FrameBuffer)驅動。鍵盤驅動(KeyBoardDriver):作為輸入設備的鍵盤驅動。Flash內存驅動(FlaseMemoryDriver):基于MTD的Flash驅動程序。照相機驅動(CameraDriver):常用的基于Linux的v412(VideoforLinux)的驅動。音頻驅動(AudioDriver):常用的基于ALSA的高級Linux聲音體系驅動。藍牙驅動(BluetoothDriver):基于IEEE802.15.1標準的無線傳輸技術。WiFi驅動:基于IEEE802.11標準的驅動程序。BinderIPC驅動:Android的一個特殊的驅動程序,具有單獨的設備節(jié)點,提供進程間通信的功能。PowerManagement(電源管理):比如電池電量等。
Android入門基礎培訓多媒體編程調用關系Android入門基礎培訓二、Android四大組件Android入門基礎培訓1.ActivityAndroid入門基礎培訓Activity是Android程序的表示層,程序的每一個顯示屏幕就是一個Activity。1、Running
位于屏幕最前端時,此時處于可見狀態(tài),和用戶可交互的狀態(tài)。
2、Paused
當Acitivy被另一個透明的或者非全屏的Activity覆蓋時的狀態(tài)叫Paused狀態(tài),雖然可見但不可交互。
3、Stop
當Activity被另外一個Activity覆蓋、界面不可見時處于Stop狀態(tài)。
4、Killed
Activity被系統(tǒng)殺死或者跟本沒啟動時就是Killed狀態(tài)。Android是通過一種Activity棧的方式來管理Activity的,一個Activity在棧中的位置決定它的狀態(tài)。Android入門基礎培訓2.BroadcastReceive
你的應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收并做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態(tài)欄上放一個持久的圖標,用戶可以打開它并獲取消息。廣播類型:1)普通廣播,通過Context.sendBroadcast(IntentmyIntent)發(fā)送的2)有序廣播,通過Context.sendOrderedBroadcast(intent,receiverPermission)發(fā)送的,該方法第2個參數決定該廣播的級別,級別數值是在-1000到1000之間,值越大,發(fā)送的優(yōu)先級越高;廣播接收者接收廣播時的級別級別(可通過intentfilter中的priority進行設置設為2147483647時優(yōu)先級最高),同級別接收的先后是隨機的,再到級別低的收到廣播,高級別的或同級別先接收到廣播的可以通過abortBroadcast()方法截斷廣播使其他的接收者無法收到該廣播,還有其他構造函數3)異步廣播,通過Context.sendStickyBroadcast(IntentmyIntent)發(fā)送的,還有sendStickyOrderedBroadcast(intent,resultReceiver,scheduler,
initialCode,initialData,initialExtras)方法,該方法具有有序廣播的特性也有異步廣播的特性;發(fā)送異步廣播要:<uses-permissionandroid:name="android.permission.BROADCAST_STICKY"
/>權限,Android入門基礎培訓接收并處理完Intent后,廣播依然存在,直到你調用removeStickyBroadcast(intent)主動把它去掉注意:發(fā)送廣播時的intent參數與Contex.startActivity()啟動起來的Intent不同,前者可以被多個訂閱它的廣播接收器調用,后者只能被一個(Activity或service)調用。監(jiān)聽廣播Intent步驟:1)
寫一個繼承BroadCastReceiver的類,重寫onReceive()方法,廣播接收器僅在它執(zhí)行這個方法時處于活躍狀態(tài)。當onReceive()返回后,它即為失活狀態(tài),注意:為了保證用戶交互過程的流暢,一些費時的操作要放到線程里,如類名SMSBroadcastReceiver2)
注冊該廣播接收者,注冊有兩種方法程序動態(tài)注冊和AndroidManifest文件中進行靜態(tài)注冊(可理解為系統(tǒng)中注冊)如下:
靜態(tài)注冊,注冊的廣播,下面的priority表示接收廣播的級別"2147483647"為最高優(yōu)先級Android入門基礎培訓3.ServiceService在后臺運行,不與用戶進行交互。在默認情況下,Service運行在應用程序進程的主線程中,如果需要在Service中處理一些網絡連接等耗時的操作,那么應該將這些任務放在單獨的線程中處理,避免阻塞用戶界面.創(chuàng)建Service–繼承android.app.Service實現(xiàn)自己的服務?必須在AndroidManifest.xml注冊service–<serviceandroid:name="MyService"></service>?啟動service–startService(i);?停止service–stopService(i);startService–service沒有運行,則先調用onCreate方法然后調用onStart方法–service已經運行,則直接調用onStart方法?stopService–調用stopService停止Service–調用onDestory最終銷毀serviceAndroid入門基礎培訓綁定Service調用Context.bindService(),客戶端可以綁定到正在運行的Service上,如果此時Service沒有運行,系統(tǒng)會調用onCreate()方法來創(chuàng)建Service,但是并不會調用onStart()方法。客戶端成功綁定到Service之后,可以從onBind()方法中返回一個IBinder對象,并使用IBinder對象來調用Service的方法。一旦客戶端與Service綁定,就意味著客戶端和Service之間建立了一個連接,只要還有連接存在,那么系統(tǒng)會一直讓Service運行下去。使用bindService()啟動的服務與調用者綁定,只要調用者關閉服務就終止,使用此方法啟動時,服務首次啟動系統(tǒng)先調用服務的onCreate()-->onBind(),如果服務已經啟動再次調用不會再觸發(fā)這2個方法,調用者退出時系統(tǒng)會調用服務的onUnbind()-->onDestory(),想主動解除綁定可使用Contex.unbindService(),系統(tǒng)依次調用onUnbind()-->onDestory();Android入門基礎培訓4.ContentProviderContentProvider是一個特殊的存儲數據的類型,它提供了一套標準的接口用來獲取以及操作數據,實現(xiàn)數據共享方法。?Android自身也提供了幾個現(xiàn)成的ContentProvider:–Contacts–Browser–CallLog–Settings–MediaStore使用方法通過ContentResolver來使用具體的某個ContentProvider。ContentResolvercr=getContentResolver();contentResolver提供的方法:–query()–insert()–update()–delete()Android入門基礎培訓ContentProvider-URI組成Android入門基礎培訓三、UI及基本布局Android入門基礎培訓1.View及ViewGroup
View是基類,ViewGroup是它的子類。Android入門基礎培訓View和ViewGroup最重要的幾個方法View和ViewGroup最重要的幾個方法:onMeasure(intwidthMeasureSpec,intheightMeasureSpec):當控件的父元素正要放置該控件時調用.父元素會問子控件一個問題,“你想要用多大地方啊?”,然后傳入兩個參數——widthMeasureSpec和heightMeasureSpeconDraw(Canvascanvas):
View類中用于重繪的方法,這個方法是所有View、ViewGroup及其派生類都具有的方法,也是AndroidUI繪制最重要的方法。開發(fā)者可重載該方法,并在重載的方法內部基于參數canvas繪制自己的各種圖形、圖像效果。onLayout(booleanchanged,intleft,inttop,intright,intbottom):
View類中布局發(fā)生改變時會調用的方法,這個方法是所有View、ViewGroup及其派生類都具有的方法,重載該類可以在布局發(fā)生改變時作定制處理,這在實現(xiàn)一些特效時非常有用。dispatchDraw(Canvascanvas):
ViewGroup類及其派生類具有的方法,這個方法主要用于控制子View的繪制分發(fā),重載該方法可改變子View的繪制,進而實現(xiàn)一些復雜的視效,典型的例子可參見Launcher模塊Workspace的dispatchDraw重載。drawChild(Canvascanvas,Viewchild,longdrawingTime)):
ViewGroup類及其派生類具有的方法,這個方法直接控制繪制某局具體的子view,重載該方法可控制具體某個具體子View。Android入門基礎培訓View布局Android入門基礎培訓View顯示Android入門基礎培訓View顯示過程1)ActivityManagerService創(chuàng)建Activity線程,激活一個activity
2)系統(tǒng)調用Instrumentation.newActivity創(chuàng)建一個activity
3)Activity創(chuàng)建后,attach到一個新創(chuàng)建的phonewindow中。這樣Activity獲取一個唯一的WindowManager服務的實例
4)Activity創(chuàng)建過程中使用setcontentView設置用用戶UI,這些VIEW被加入到PhoneWindow的ContentParent中。
5)Activity線程繼續(xù)執(zhí)行,當執(zhí)行到Activity.makeVisible是將根viewDecoView加入到WindowManger中,WindowManger實全會為每個DecoView創(chuàng)建對應的ViewRoot
6)每個ViewRoot擁有一個Surface,每個Surface將會調用底層庫創(chuàng)建圖形繪制的內存空間。這個底層庫就是SurfaceFlinger。SurfaceFlinger同時也負責將個View繪制的圖形合到一塊(按照Z軸)顯示到用戶屏幕。
7)如果用戶直接在Canvas上繪制,實際上它直接操作Surface。但對每個View的變更,它是要通知到ViewRoot,然后ViewRoot獲取Canvas。如果繪制完成,surfaceFlinger得到通知,合并Surface成一個Surface到設備屏幕。
從上面的圖形輸出過程分析,我們可以知道真正顯示圖形的實際上跟Activity沒有關系,完全由WindowManager來決定。WindowManager是一個系統(tǒng)服務,因此可以直接調用這個服務來創(chuàng)建界面,并且更絕的是Dialog、Menu也是有WindowManager來管理的。另外一個我們也可以看到,最底層都是Surface來,因此,常見開發(fā)游戲的人都推薦你使用SurfaceView來創(chuàng)建界面。Android入門基礎培訓2.五大UI布局為了適應各式各樣的界面風格,Android系統(tǒng)提供了5種布局:FrameLayout(框架布局)LinearLayout(線性布局)RelativeLayout(相對布局)TableLayout(表格布局)AbsoluteLayout(絕對布局)Android入門基礎培訓
FrameLayout(框架布局)
所有東西依次都放在左上角,會重疊,這個布局比較簡單,也只能放一點比較簡單的東西<?xmlversion="1.0"encoding="utf-8"?>
<FrameLayoutxmlns:android=""
android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextViewandroid:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff000000"
android:gravity="center"
android:text="1"/>
<TextViewandroid:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff654321"
android:gravity="center“
android:text="2"/>
<TextViewandroid:layout_width="50dp"
android:layout_height="50dp"
android:background="#fffedcba"
android:gravity="center"
android:text="3"/>
</FrameLayout>
Android入門基礎培訓Android入門基礎培訓
LinearLayout(線性布局)
每一個LinearLayout里面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal")。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextViewandroid:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ff000000"
android:text="@string/hello"/>
<LinearLayoutandroid:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextViewandroid:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ff654321"
android:layout_weight="1"
android:text="1"/>
<TextViewandroid:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#fffedcba"
android:layout_weight="2"android:text="2"/>
</LinearLayout>
</LinearLayout>
Android入門基礎培訓Android入門基礎培訓
AbsoluteLayout(絕對布局)
絕對布局用X,Y坐標來指定元素的位置,這種布局方式也比較簡單,但是在屏幕旋轉時,往往會出問題,而且多個元素的時候,計算比較麻煩。這種布局比較少用。<?xmlversion="1.0"encoding="utf-8"?>
<AbsoluteLayoutxmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextViewandroid:layout_width="50dp"
android:layout_height="50dp"
android:background="#ffffffff"
android:gravity="center"
android:layout_x="50dp"
android:layout_y="50dp"
android:text="1"/>
<TextViewandroid:layout_width="50dp"
android:layout_height="50dp"
android:background="#ff654321"
android:gravity="center"
android:layout_x="25dp"
android:layout_y="25dp"
android:text="2"/>
<TextViewandroid:layout_width="50dp"
android:layout_height="50dp"
android:background="#fffedcba"
android:gravity="center"
android:layout_x="125dp"
android:layout_y="125dp"
android:text="3"/>
</AbsoluteLayout>
Android入門基礎培訓Android入門基礎培訓
RelativeLayout(相對布局)
相對布局可以理解為某一個元素為參照物,來定位的布局方式。主要屬性有:相對于某一個元素android:layout_below、
android:layout_toLeftOf相對于父元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns:android=""
android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextViewandroid:id="@+id/text_01"android:layout_width="50dp"
android:layout_height="50dp"
android:background="#ffffffff"
android:gravity="center"
android:layout_alignParentBottom="true"
android:text="1"/>
<TextViewandroid:id="@+id/text_02"android:layout_width="50dp"
android:layout_height="50dp"
android:background="#ff654321"
android:gravity="center"
android:layout_above="@id/text_01"
android:layout_centerHorizontal="true"
android:text="2"/>
<TextViewandroid:id="@+id/text_03"android:layout_width="50dp"
android:layout_height="50dp"
android:background="#fffedcba"
android:gravity="center"
android:layout_toLeftOf="@id/text_02"
android:layout_above="@id/text_01"
android:text="3"/>
</RelativeLayout>
Android入門基礎培訓Android入門基礎培訓
TableLayout(表格布局)
TableLayout顧名思義,此布局為表格布局,適用于N行N列的布局格式。一個TableLayout由許多TableRow組成,一個TableRow就代表TableLayout中的一行。
TableRow是LinearLayout的子類,它的android:orientation屬性值恒為horizontal,并且它的android:layout_width和android:layout_height屬性值恒為MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是橫向排列,并且寬高一致的。這樣的設計使得每個TableRow里的子元素都相當于表格中的單元格一樣。在TableRow中,單元格可以為空,但是不能跨列。
下面示例演示了一個TableLayout的布局結構,其中第二行只有兩個單元格,而其余行都是三個單元格。Android入門基礎培訓<?xmlversion="1.0"encoding="utf-8"?>
<TableLayoutxmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"android:layout_height="fill_parent">
<TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content">
<TextViewandroid:background="#ffffffff"android:gravity="center"
android:padding="10dp"android:text="1"/>
<TextViewandroid:background="#ff654321"android:gravity="center"
android:padding="10dp"android:text="2"/>
<TextViewandroid:background="#fffedcba"android:gravity="center"
android:padding="10dp"android:text="3"/>
</TableRow>
<TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content">
<TextViewandroid:background="#ff654321"
android:gravity="center"android:padding="10dp"android:text="2"/>
<TextViewandroid:background="#fffedcba"
android:gravity="center"android:padding="10dp"android:text="3"/>
</TableRow>
<TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content">
<TextViewandroid:background="#fffedcba"
android:gravity="center"
android:padding="10dp"android:text="3"/>
<TextViewandroid:background="#ff654321"
android:gravity="center"android:padding="10dp"android:text="2"/>
<TextViewandroid:background="#ffffffff"
android:gravity="center"android:padding="10dp"android:text="1"/>
</TableRow>
</TableLayout>Android入門基礎培訓Android入門基礎培訓四、數據存儲Android入門基礎培訓數據存儲方式SharedPreferences文件SQLite數據庫網絡Android入門基礎培訓1.SharedPreferences
SharedPreferences是Android平臺上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態(tài),一般在Activity中重載窗口狀態(tài)onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平臺常規(guī)的Long長整形、Int整形、String字符串型的保存。
SharedPreferences類似過去Windows系統(tǒng)上的ini配置文件,但是它分為多種權限,可以全局共享訪問,對于常規(guī)的輕量級而言比SQLite要好不少。xml處理時Dalvik會通過自帶底層的本地XMLParser解析,比如XMLpull方式,這樣對于內存資源占用比較好。
它的本質是基于XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現(xiàn)。實現(xiàn)SharedPreferences存儲的步驟如下:一、根據Context獲取SharedPreferences對象二、利用edit()方法獲取Editor對象。三、通過Editor對象存儲key-value鍵值對數據。四、通過commit()方法提交數據。Android入門基礎培訓SharedPreferences示例public
classMainActivityextendsActivity{ @Override
public
voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState); setContentView(R.layout.main);
SharedPreferencessp=getSharedPreferences("SP",MODE_PRIVATE); //存入數據
Editoreditor=sp.edit(); editor.putString("STRING_KEY","string"); editor.putInt("INT_KEY",0); editor.putBoolean("BOOLEAN_KEY",true); mit();
//返回STRING_KEY的值
Log.d("SP",sp.getString("STRING_KEY","none")); //如果NOT_EXIST不存在,則返回值為"none"
Log.d("SP",sp.getString("NOT_EXIST","none")); }}這段代碼執(zhí)行過后,即在/data/data/com.test/shared_prefs目錄下生成了一個SP.xml文件,一個應用可以創(chuàng)建多個這樣的xml文件。
Android入門基礎培訓2.文件存儲
關于文件存儲,Activity提供了open()方法可以用于把數據輸出到文件中,具體的實現(xiàn)過程與在J2SE環(huán)境中保存數據到文件中是一樣的。文件可用來存放大量數據,如文本、圖片、音頻等。默認位置:/data/data/<包>/files/***.***。
示例public
void
save()
{
try
{
outStream=this.open("a.txt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
}
catch
(
e)
{
return;
}
catch
(IOException
e){
return
;
}
}
Android入門基礎培訓3.SQLite數據庫存儲
SQLite是輕量級嵌入式數據庫引擎,它支持SQL語言,并且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla,PHP,Python)都使用了SQLite.SQLite由以下幾個組件組成:SQL編譯器、內核、后端以及附件。SQLite通過利用虛擬機和虛擬數據庫引擎(VDBE),使調試、修改和擴展SQLite的內核變得更加方便。
Android集成了SQLite數據庫Android在運行時(run-time)集成了SQLite,所以每個Android應用程序都可以使用SQLite數據庫。
數據庫存儲在/data/datat/<項目文件夾>/databases/下。
Android提供了SQLiteOpenHelper幫助你創(chuàng)建一個數據庫,你只要繼承SQLiteOpenHelper類,就可以輕松的創(chuàng)建數據庫。SQLiteOpenHelper類根據開發(fā)應用程序的需要,封裝了創(chuàng)建和更新數據庫使用的邏輯。
SQLiteOpenHelper的子類,至少需要實現(xiàn)三個方法:1
.構造函數,調用父類SQLiteOpenHelper的構造函數。這個方法需要四個參數:上下文環(huán)境(例如,一個Activity),數據庫名字,一個可選的游標工廠(通常是Null),一個代表你正在使用的數據庫模型版本的整數。2.
onCreate()方法,它需要一個SQLiteDatabase對象作為參數,根據需要對這個對象填充表和初始化數據。3.onUpgrage()方法,它需要三個參數,一個SQLiteDatabase對象,一個舊的版本號和一個新的版本號,這樣你就可以清楚如何把一個數據庫從舊的模型轉變到新的模型。Android入門基礎培訓SQLite數據庫示例
//通過getReadableDatabase()和getWritableDatabase()可以獲得數據庫對象。
//提供onCreate()-創(chuàng)建數據庫時,onUpgrade()-升級數據庫時,兩個回調函數。publicclassDatabaseHelperextendsSQLiteOpenHelper{//按要求必須要有構造函數
publicDatabaseHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){super(context,name,factory,version);}//當第一次得到SQLiteDatabase對象時,調用該方法@OverridepublicvoidonCreate(SQLiteDatabasedb){ Stringsql="createtableMSG(idint,bodyvarchar(100))"; db.execSQL(sql); System.out.println("創(chuàng)建了一個數據庫!");}//當更新數據庫時執(zhí)行該方法@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ System.out.println("更新了數據庫!"); //還可以寫其他的操作}}Android入門基礎培訓SQLite操作(增、刪、查、改)
getReadableDatabase()得到可讀的數據庫,返回SQLiteDatabase對象,然后通過對象進行數據庫操作。getWritableDatabase()得到可寫的數據庫,返回SQLiteDatabase對象,然后通過對象進行數據庫操作。
SQLiteDatabase類
提供了對數據庫的一些基本操作:insert()、delete()、query()、update()//生成ContentValues對象,key:列名,value:想插入的值ContentValuesvalues=newContentValues();values.put("id",1); values.put("body","hello");
DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,"text_msg",null,2);
//得到可寫的SQLiteDatabase對象 SQLiteDatabasedb=dbhelper.getWritableDatabase();
//調用insert方法,將數據插入數據庫 //參數1:表名
//參數2:如果你想插入空值,那么你必須指定它的所在的列
db.insert("MSG",null,values);
System.out.println("插入了:1,hello");插入數據Android入門基礎培訓SQLite操作(增、刪、查、改)刪除數據DatabaseHelper
dbhelper
=
new
DatabaseHelper(SqliteActivity.this,
"text_msg",
null,
2);
//得到可寫的SQLiteDatabase對象
SQLiteDatabase
db
=
dbhelper.getWritableDatabase();
//調用delete方法,刪除數據
db.delete("MSG",
"id=?",
new
String[]{"1"});
System.out.println("刪除了:id=1");
Android入門基礎培訓SQLite操作(增、刪、查、改)查詢數據DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,"text_msg",null,2);
//得到可讀的SQLiteDatabase對象 SQLiteDatabasedb=dbhelper.getReadableDatabase(); //參數1:表名 //參數2:要想顯示的列 //參數3:where子句 //參數4:where子句對應的條件值 //參數5:分組方式 //參數6:having條件 //參數7:排序方式 Cursorcursor=db.query("MSG",newString[]{"id","body"},"id=?",newString[]{"1"},null,null,null);
System.out.println("查到的數據為:"); while(cursor.moveToNext()){ intid=cursor.getInt(cursor.getColumnIndex("id")); Stringname=cursor.getString(cursor.getColumnIndex("body"));System.out.println("-->"+id+"::::::::::"+name); }Android入門基礎培訓SQLite操作(增、刪、查、改)修改數據ContentValuesvalues=newContentValues();values.put("body","mydear!");DatabaseHelperdbhelper=newDatabaseHelper(SqliteActivity.this,"text_msg",null,2);
//得到可寫的SQLiteDatabase對象 SQLiteDatabasedb=dbhelper.getWritableDatabase();
//調用insert方法,將數據插入數據庫 //參數3:where子句"?"是占位符號,對應后面的"1",這和web開發(fā)時的語法是一樣的
db.update("MSG",values,"id=?",newString[]{"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電磁干擾防護技術在光電子系統(tǒng)中的應用考核試卷
- 邀請信+求助信+投訴信(測試)解析版-2025年高考英語二輪復習
- JB-LG-YS4800C、JB-LT-YS4800C、JB-LB-YS4800C火災報警控制器說明書-營口賽福德
- 河南省安陽市林州市2024-2025學年八年級(下)期末物理試卷(含解析)
- 工程項目驗收時辨析工作的開展
- 質量管理體系改進決策導則
- 2024-2025學年廣東省深圳市龍崗區(qū)北師大版三年級下冊期末學業(yè)評價數學試卷(含答案)
- 參加科技活動時企業(yè)如何通過AI+數智應用精準找到合適的技術成果和專家資源
- 山東省安全員B證試題及答案
- 四川省自貢市某中學2024-2025學年七年級下學期期中考試數學試卷(含解析)
- 醫(yī)學人文與人文醫(yī)學 課件
- 建筑施工特種作業(yè)人員體檢表
- 《人才畫像 讓招聘準確率倍增》讀書筆記思維導圖
- 供應鏈ABN實操手冊(2021版)
- 隧道洞渣加工石料組織管理方案
- 機電安裝質量標準
- 2023年湖北農谷實業(yè)集團有限責任公司招聘筆試模擬試題及答案解析
- DB15T 2748-2022 綠色電力應用評價方法
- 外科學肺部疾病教案(共18頁)
- 廠房改造合同范本
- 專業(yè)技術職務任職資格評審表2009
評論
0/150
提交評論