《Android編程框架與應(yīng)用開(kāi)發(fā)》由會(huì)員分享,可在線閱讀,更多相關(guān)《Android編程框架與應(yīng)用開(kāi)發(fā)(42頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,android,框架及應(yīng)用開(kāi)發(fā)介紹,信息應(yīng)用開(kāi)發(fā)部,2009,年,9,月,2,Android,的發(fā)展,初探,Android,框架,如何開(kāi)發(fā)一個(gè),android,應(yīng)用,如何開(kāi)發(fā)一個(gè),widget,目錄,Android,發(fā)展路線,2007,年,11,月,,Android,發(fā)布,2008,年,9,月,23,日,,HTC G1,上市,,android SDK 1.0,發(fā)布,2008,年,10,月,21,日,,android,開(kāi)源,2009,年,4,月,27,日,,android SDK 1.5,發(fā)布,?,andro
2、id 2.0,,代號(hào),donut,,支持,CDMA,,多點(diǎn)觸摸,文本語(yǔ)音引擎,,3,Android,手機(jī)一覽,4,華為,pulse,LG Etna,5,Android,的發(fā)展,初探,Android,框架,如何開(kāi)發(fā)一個(gè),android,應(yīng)用,如何開(kāi)發(fā)一個(gè),widget,目錄,Android,框架,6,JNI,JAVA,C/,匯編,Android,應(yīng)用程序構(gòu)成,7,Activity,Service,Broadcast Receiver,Content Provider,Intent,8,Activity,Activity,A visual user interface,通過(guò),view,管理,UI,
3、每一個(gè)有用戶界面的應(yīng)用至少包含一個(gè),activity,一個(gè)應(yīng)用可以有多個(gè),activity,,其中一個(gè)作為,main activity,用于啟動(dòng)顯示,Activity,通過(guò),startActivity,或,startActivityForResult,啟動(dòng)另外的,activity,9,ActivityView,通過(guò),View,管理,UI,View,繪制,UI,與處理,UI,event,View,可通過(guò),xml,描述定義,也可在代碼中生成。,setContentView(R.layout.main),Android,建議將,UI,設(shè)計(jì)和邏輯分離,android UI,設(shè)計(jì)類似,swing,,通過(guò)
4、布局,(layout),組織,UI,組件,10,Activity,生命周期,Activity,通過(guò),onCreate,被創(chuàng)建,當(dāng)一個(gè),activity,失去焦點(diǎn),該,activity,將進(jìn)入,pause,狀態(tài),系統(tǒng)在內(nèi)存不足時(shí)會(huì)將其終止,當(dāng)一個(gè),activity,被另一個(gè),activity,覆蓋,該,activity,將進(jìn)入,stop,狀態(tài),系統(tǒng)在需要內(nèi)存的時(shí)候會(huì)將其終止,11,12,Intent,Intent(1),13,類似于消息、事件通知,Intent,構(gòu)成:,action,、,category,、,data,Activity,、,Service,、,broadcast receiver
5、,之間的橋梁,Intent,activity,service,Broadcast receiver,Intent(2),兩類,intent:,顯式:指定具體的目標(biāo)組件處理,startActivity(,new Intent(ActivityLifecycle.this,AnotherActivity.class);,隱式:由系統(tǒng)接受并決定如何處理,startActivity(,new Intent(Intent.,ACTION_DIAL);,在,AndroidManifest.xml,中定義,activity,、,service,、,broadcast receiver,接受的,intent,
6、14,Intent(3),Intent filter:action,、,category,、,data,15,framework,Component name,Action,Data,Category,intent,component,activity,service,Broadcast receiver,實(shí)例,16,action-DIAL,data-tel:02038639592,action-VIEW,data-http:/,17,Service,Service,沒(méi)有,UI,,啟動(dòng)之后一直運(yùn)行于后臺(tái),例子:音樂(lè)播放器,與應(yīng)用程序的其他模塊(例如,activity,)一同運(yùn)行于主線程中,通過(guò)
7、,startService,或,bindService,創(chuàng)建,Service,通過(guò),stopService,或,stopSelf,終止,Service,一般的,在,activity,中啟動(dòng)和終止,service,18,Service,生命周期,onCreate,onStart,onDestroy,19,Context.stopService(),Serivce.stopSelf(),Context.startService(),Context.bindService(),20,Content Provider,何為,Content provider,什么是,Content provider,?
8、,Content Provider,是,Android,應(yīng)用程序的四大組成部分之一,是,android,中的跨應(yīng)用訪問(wèn)數(shù)據(jù)機(jī)制,為何需要,content provider,?,Android,中每一個(gè),app,的資源是私有的,app,通過(guò),content provider,和其他,app,共享私有數(shù)據(jù),21,如何使用,content provider,通過(guò),content resolver,訪問(wèn),Context.getContentResolver(),22,app,ContentResolver,ContentProvider A,ContentProvider B,ContentResol
9、ver,ContentResolver,app,app,如何使用,content provider(,續(xù),),URI,定位資源,content:/contacts/people,content:/call_log,類似關(guān)系數(shù)據(jù)庫(kù)的訪問(wèn)方式,以二維數(shù)據(jù)表的格式暴露數(shù)據(jù),缺省都包含,_id,字段,23,delete(Uriurl,String where,StringselectionArgs),insert(Uriurl,ContentValuesvalues),query,(Uriuri,Stringprojection,Stringselection,StringselectionArgs,
10、StringsortOrder),update(Uriuri,ContentValuesvalues,Stringwhere,StringselectionArgs),定義自己的,content provider,在,AndroidManifest.xml,中聲明一個(gè),provider,創(chuàng)建,MyProvider,類,繼承自,ContentProvider,。定義該,provider,提供的數(shù)據(jù)集的,URI,和字段名,在,MyProvider,中實(shí)現(xiàn),ContentProvider,的,6,個(gè),abstract method,:,query,insert,update,delete,getTy
11、pe,onCreate,在其他,app,中使用,ContentResolver,通過(guò),URI,訪問(wèn),MyProvider,提供的數(shù)據(jù),24,Android,的存儲(chǔ),一般的,應(yīng)用程序的數(shù)據(jù)(包括文件)都是私有的,四種持久存儲(chǔ)方式,Preferences,類似,properties,,,xml,文件,Files,DatabaseSQLite,Network,25,26,Broadcast Receiver,Broadcast receiver,接收和處理,android,的廣播消息,Android,的廣播機(jī)制,系統(tǒng)事件,例如變換時(shí)區(qū)、電量低等,應(yīng)用程序發(fā)出廣播消息:,sendBroadCast,廣
12、播消息:,intent,27,android,app,Broadcast receiver,Send broadcast,創(chuàng)建,Broadcast Receiver,實(shí)現(xiàn)一個(gè),BroadcastReceiver,public class MyAndroidReceiver extends BroadcastReceiver,override onReceive(Context context,Intents Intents),注冊(cè),BroadcastReceiver,在,AndroidManifest.xml,文件當(dāng)中進(jìn)行注冊(cè),在代碼當(dāng)中直接進(jìn)行注冊(cè),28,IntentsFilter filt
13、er=new IntentsFilter(NEW_BROADCAST);,MyAndroidReceiver MyAndroidReceiver=new MyAndroidReceiver();,registerReceiver(MyAndroidReceiver,filter);,Broadcast receiver,生命周期,Create Object,onReceive,Destroy,object,29,Broadcast receiver,對(duì)象在,onReceive,返回后被銷毀,onReceive,中不適合處理異步過(guò)程。例如彈出對(duì)話框與用戶交互,可使用消息欄替代。,Android,
14、權(quán)限控制,在,AndroidManifest.xml,中描述一個(gè),app,的權(quán)限,例如:,30,權(quán)限舉例,(,參考,android.,Manifest.permission),權(quán)限名稱,權(quán)限描述,接收短信,android.permission.RECEIVE_SMS,撥打電話,android.permission.CALL_PHONE,系統(tǒng)啟動(dòng)完畢通知,android.permission.RECEIVE_BOOT_COMPLETED,讀取聯(lián)系人信息,android.permission.READ_CONTACTS,修改聯(lián)系人信息,android.permission.WRITE_CONTAC
15、TS,31,Android,的發(fā)展,初探,Android,框架,如何開(kāi)發(fā)一個(gè),android,應(yīng)用,如何開(kāi)發(fā)一個(gè),widget,目錄,工欲善其事,必先利其器,Android SDK,最新版本:,android-sdk-1.5_r2,AVD:android virtual device,ADB:Android Debug Bridge,Hierarchyviewer:UI,解析,IDE:eclipse+ADT,ADT:Android Development Tools,32,Hello World,33,Android,帶,UI,應(yīng)用的入口,類似,main,UI,界面設(shè)計(jì)的,xml,文件,,an
16、droid,中采用一個(gè),xml,描述,UI,Android project,34,Activity class,自動(dòng)生成的資源定義類,存放應(yīng)用使用的資源,UI,布局描述文件,應(yīng)用使用的靜態(tài)字符串,應(yīng)用程序描述文件,基本,UI,組件,35,36,實(shí)例:,MyPhonebook,37,實(shí)例:短信未知號(hào)碼提示,38,Android,的發(fā)展,初探,Android,框架,如何開(kāi)發(fā)一個(gè),android,應(yīng)用,如何開(kāi)發(fā)一個(gè),widget,目錄,App widget,組成,39,AppWidget Provider Info,AppWidget Provider,AppWidget View,App widget,App Widget,描述文件。定義,widget,大小、更新頻率、接收的,intent,等,App widget,主體,,java,類,負(fù)責(zé),widget,初始化,各種消息的響應(yīng)等,App widget,界面描述文件。描述,widget,主界面的布局、包含的控件、顯示效果等,Configure Activity,用于配置,app widget,的,activity,App widget,的