2013年6月24日 20:58:26

昨天直接下課就回學校去了,所以沒寫這個。

昨天,今天,明天,這3天的話對於我來說真是好多個辛虧啊~呵呵,生活有時候就是這麼順心的事,不過好多時候你沒去用心感謝罷了。辛苦我昨天給老爸就打了電話,不然他今天明天沒空的,而明天就得搬完所有東西離校了~(也就是畢業了唄);辛虧今早我自己動身把離校該辦的業務去搞定了,不然就委託人家,怕都不能順利辦完而安然離校;辛虧本來應該的明天上課的,我不是電腦上的QQ沒看到羣消息,然後今天上午把事搞定就跑回培訓這邊宿舍而聽到了消息,不然明天傻乎乎的不是就可能白跑一趟了?辛虧現在坐在自己電腦前敲了代碼,不然又是閒狀態,即使看也了不了幾頁書啊;辛虧昨天就把行李交老爸運回家了,不然今天明天肯定一團亂;嗯辛虧回學校了,收颳了點同學不要的東西;辛虧明天培訓這邊會停電,然後我明天就不用預打算的請假了;辛虧這幾天下雨陰天涼快啊,不然是個人都不好受;辛虧我明天還是能自己親自去領畢業證,不然拖着的話肯定是各種麻煩;還有啥啥辛虧就不想也不寫了,知足就好,知道就行,想多了是浪費時間哦。

 

0623
新知識www+h模式。。what,why,how

Android中的Service,與Activity類似,無用戶界面,生命週期
創建和配置Service:
必須實現onBind()方法
onCreate()第一次啓動才調
onStartCommand():被啓動時回調,可接受intent的數據
onUnbind():Service被斷開連接時回調該方法
onDestroy():銷燬時調(傳intent,用stopService(intent);)
要配置xml裏註冊service:name,intent-filter
啓動倆方式:
①startService不關聯訪問者,先new intent,setAction,startService(intent);
②和bindService(3參數)綁定訪問者,可通信。2參connection:需實現ServiceConnection接口的類
unbindService關閉,

練習,創個登陸。在service裏判斷賬戶是否正確,然後返回(感覺好繞!麼)
自1:load界面,實現監聽事件,確認按鈕裏:
bindService(service, conn, flags):
service是new的intent;包含需要傳的數據【Connection:連接;Bind:綁定】
conn是new MyServiceConnection():是自建類implements ServiceConnection,onServiceConnected裏寫MyBinder binder = (MyBinder) service;而MyBinder又是自寫extends Binder,裏面個成員變量String data,並set/get方法。
下面回到Load界面的bindService,第三個參數flags常量: BIND_AUTO_CREATE表示自動添加的標號

service的生命週期:startService()方法:onCreate()-》onStart()-》運行...被通知停止-》onDestory()關閉;
bindService()方法:onCreate()-》onBind()-》客戶與Service交互..-》onUnBind()-》onDestory()關閉;
要知道:若已start服務,再綁,再解綁,再綁,有方法onReBind()的,可把onUnbind返回類型改爲true以實現重新綁定;

系統服務:採用Ontext的getSystemService(String name)
電話管理器。eclipse裏DDMS裏Emulator Control:模擬打電話發短信等

黑名單:兩個應用程序用:遠程方法調用(JAVA裏是rmi技術)
AIDL服務:藉口定義語言
,有個後綴爲aidl的文件。。。(我密西去了,,以下暫爲自看電子書)。
 先定義個遠程調用接口,然後爲該藉口提供一個實現類,客戶端訪問Service時,android並不是直接返回Service對象給客戶端,Service只是將一個回調對象(IBinder對象)通過onBind()方法返回給客戶端,一次Android的AIDL遠程接口的實現類就是那個IBinder實現類;AIDL的語法與java接口很類似,但他的源代碼必須以.aidl結尾,接口中用到的數據類型除了基本類型、String、List、Map、CharSequence之外,其他全需要導包;用ADT工具會自動爲該AIDL接口生成實現。會在gen目錄下自動生成個java接口,內部類Stub實現了IBinder和自寫名的兩個接口,這個Stub類將會作爲遠程Service的回調類---它實現了IBinder接口 ,因此可作爲Service的onBind()方法的返回值。..

將接口暴露給客戶端
將定義好AIDL接口之後,接下來就可定義一個Service實現類,該Service的onBind()方法所返回的IBinder對象應該是ADT所生成的IMessage.Stub的子類的實例。至於其他部分,則與開發本地Service一樣。
.客戶端訪問AIDLService
AIDL接口定義了兩個進程之間的通信接口,因此不僅服務器端需要AIDL接口,客戶端同樣需要前面定義的AIDL接口,因此開發客戶端的第一步就是將Service端的AIDL接口文件複製到客戶端應用中。
接下來的開發和之前綁定本地Service的區別不大,唯一不同就是ServiceConnection並不能直接獲取Service的onBind()方法所返回的對象,它只能返回onBind()方法所返回的對象的代理,因此在ServiceConection的onServiceConnected方法中需要通過如下代碼進行處理:
 IMessage.Stub.asInterface(binder).

傳遞複雜數據的AIDL服務
如果需要使用自定義類型,那麼該類必須實現Parcelable接口,同時實現接口要求實現的所有方法,並且要求在實現類中定義一個CREATOR,類型爲Parcelable.Creator的靜態Field。除此之外,還要求使用AIDL代碼來定義這些自定義類型。

  package com.lovo.bean;

  parcelablePersonBean;

public class PersonBean implements Parcelable{
public int describeContents() {
	return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(name);
dest.writeString(sex);
}
public static final Parcelable.Creator<PersonBean> CREATOR = new Parcelable.Creator<PersonBean>() {
public PersonBean createFromParcel(Parcel source) {
	return new PersonBean();
}
public PersonBean[] newArray(int size) {
	return new PersonBean[size];
}
};
}
aidl接口定義中需要導入自定義類的包。

importcom.lovo.bean.PersonBean;

interfaceIMessage{

  intgetFlag();

  String getMessage();

  PersonBeangetPerson();

}

接下來在客戶端中使用ServiceConnection類的回調方法就可以接收到遠程的對象並調用其方法

..未完待續...

 


下來作業倆(黑名單、羣發短信)
黑名單(拷的文件要放對包)

(後面將講:)廣播接受者。數據存取,Content Provider,多媒體應用,圖像

 

下午暫時把黑名單做了,目前還有錯,等會調試吧。

昨天課上我說可以同一臺機子啓動兩個虛擬器實現相互通訊,老師說不可能和不曉得,然後我百度的那個方法自己又沒弄出來,不了了之而罷。

額悲了個小劇,把老師代碼和資料拷回來了,自己寫的卻忘拷了。。重要的註釋啊啊


 Just like in my dream!But our life more exciting!兩個次元咱都活得很快樂

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章