成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android ApiDemo 慣用代碼解析

移動(dòng)開發(fā) Android
一直想把Android的ApiDemo里面的Demo寫出來,一來可以方便自己查看,二來方便大家能夠早一點(diǎn)切入,從基礎(chǔ)的控件到界面布局乃至到OPEN GL 等深入知識(shí)。

一、關(guān)于Dialog

|--- com.example.android.apis.app/AlertDialogSamples.java

里面包含了Dialog的各種用法,有10種不同的Dialog實(shí)例。

|--- com.example.android.apis.app/FragmentDialog.java

使用DialogFragment來實(shí)現(xiàn)Dialog,可以使用onCreateView()來創(chuàng)建Dialog布局,也可以使用DialogFragment類的getDialog()方法,在里面可以使用之前創(chuàng)建Dialog的方法,返回一個(gè)Dialog。

Android官方推薦使用DialogFragment。

二、關(guān)于Pregerence

|--- com.example.android.apis.preference

這個(gè)包里面介紹了Preference的用法,包括使用Code和XML(addPreferencesFromResource)兩種方法來實(shí)現(xiàn)preference布局,使用setListFooter可以在底部添加一個(gè)布局(代碼里面是添加一個(gè)Button在底部)

三、關(guān)于Service

創(chuàng)建Servcie的方法有startService()和bindServcie()兩種:由startService()創(chuàng)建的服務(wù)的目的只是服務(wù)的啟動(dòng)和終止,而bindServcie()創(chuàng)建的的服務(wù)是為了服務(wù)的遠(yuǎn)程控制(一般都會(huì)獲得一個(gè)服務(wù)對象實(shí)例).

|--- com.example.android.apis.app/LocalServcie.java

由startService()創(chuàng)建的服務(wù)調(diào)用完onCreate()方法后,將繼續(xù)調(diào)用onStartCommand()方法,該方法有返回值,可以通過該返回值來設(shè)置Servcie被強(qiáng)行關(guān)閉之后是否重新再啟動(dòng)

通過在代碼里面添加Log,得到bindServcie()的執(zhí)行流程:1.客戶端請求連接服務(wù)bindServcie()----->2.在綁定的服務(wù)生成之后,Android會(huì)調(diào)用服務(wù)的onBind()回調(diào)方法,用來處理服務(wù)綁定,onBind()方法返回一個(gè)IBinder對象,用于與服務(wù)通信----->3.客戶端的ServcieConnection對象的onServiceConnected(cn,IBinder)方法使用第2步傳遞的IBinder對象,調(diào)用服務(wù)端的getService()得到服務(wù)實(shí)例.

|--- com.example.android.apis.app/RemoteServcie.java

AIDL是一種接口定義語言,用來約束兩個(gè)進(jìn)程之間的通信規(guī)則,供編譯器生成代碼,用來實(shí)現(xiàn)Android設(shè)備上兩個(gè)進(jìn)程間的通信。

以ISecondary.aidl文件為例,Android會(huì)根據(jù)AIDL文件中定義的接口自動(dòng)生成綁定遠(yuǎn)程服務(wù)所需要的代碼,整個(gè)bindServcie()的執(zhí)行流程如下:

1.進(jìn)程A調(diào)用bindServcie()請求連接RemoteService

2.進(jìn)程B在服務(wù)生成之后回調(diào)onBind()方法,生成用于處理Binder IPC的IBinder對象,并返回

3.進(jìn)程A調(diào)用回調(diào)方法onServiceConnected()方法,利用onBind()返回的IBinder,將其傳遞給IScondary.Stub.asInterface()函數(shù),并使用它生成與RemoteService服務(wù)綁定在一起的服務(wù)代理對象ISeondary.Stub.Proxy,***將其保存到mSecondaryService成員變量中。至此,RemoteService的ISecondary接口的綁定就完成了。

4.進(jìn)程A使用服務(wù)代理對象ISeondary.Stub.Proxy,調(diào)用RemoteService服務(wù)的getPid()代理方法

5.Binder IPC:服務(wù)代理對象ISeondary.Stub.Proxy向服務(wù)Binder對象ISeondary.Stub傳遞Binder IPC數(shù)據(jù)

6.進(jìn)程B調(diào)用RemoteService服務(wù)的getPid() Stub方法,ISeondary.Stub服務(wù)Binder對象獲取Binder IPC數(shù)據(jù)后,會(huì)調(diào)用RemoteService服務(wù)里面實(shí)現(xiàn)的getPid() Stub方法,將服務(wù)進(jìn)程ID返回給進(jìn)程A

責(zé)任編輯:閆佳明 來源: myexception
相關(guān)推薦

2013-12-19 13:40:44

Android ApiAndroid開發(fā)Android SDK

2013-12-19 13:51:12

Android ApiAndroid開發(fā)Android SDK

2013-12-19 14:32:31

Android ApiAndroid開發(fā)Android SDK

2013-12-19 14:34:52

Android ApiAndroid開發(fā)Android SDK

2013-12-19 14:36:43

Android ApiAndroid開發(fā)Android SDK

2013-12-19 14:13:16

Android ApiAndroid開發(fā)Android SDK

2013-12-19 14:16:46

Android ApiAndroid開發(fā)Android SDK

2013-12-19 14:00:39

Android ApiAndroid開發(fā)Android SDK

2013-12-19 14:28:04

Android ApiAndroid開發(fā)Android SDK

2011-06-09 15:15:52

RAII

2011-09-07 14:01:41

Android Wid實(shí)例

2011-10-31 14:53:23

Dart

2009-12-14 10:03:57

Ruby慣用法

2015-07-13 09:46:44

Java習(xí)慣用法

2024-02-01 00:10:21

C++PIMPL編程

2009-03-10 14:17:53

微軟招聘曝光

2010-01-27 16:21:29

Android多媒體播

2009-12-15 15:20:36

2019-01-16 18:39:24

數(shù)據(jù)開發(fā)模型

2024-02-02 12:42:42

C++Policy模板
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日本超碰在线 | 成人不卡| 久久久久久久久久久丰满 | 久久久久无码国产精品一区 | 天堂三级 | 午夜电影日韩 | 国产精品国产三级国产aⅴ中文 | 日日日操 | 国产精品久久久久久久久久 | 日韩一区二区三区在线观看 | 日韩三级在线 | 综合色播 | 国产乱码精品1区2区3区 | 欧美一区二区综合 | 91精品国产色综合久久不卡蜜臀 | 在线播放国产一区二区三区 | 99福利视频| 欧美黄色大片在线观看 | 亚洲精品永久免费 | 久久99久久 | 欧美日韩亚洲国产 | 日韩欧美在线播放 | 黄网在线观看 | 国产精品一区二区久久 | 久久伊人免费视频 | 成人亚洲精品 | 极品销魂美女一区二区 | 久久久不卡网国产精品一区 | 久久综合久色欧美综合狠狠 | 国产精品亚洲成在人线 | 久久久久久久久久久高潮一区二区 | 91xxx在线观看| 国产欧美日韩 | 国内精品免费久久久久软件老师 | 欧美一区二区在线播放 | 久久精品视频99 | 在线免费观看黄a | 激情一区二区三区 | 91精品国模一区二区三区 | 日韩国产高清在线观看 | 精品香蕉一区二区三区 |