㈠ android里 activity怎麼向service傳遞參數
android中activity中向service傳遞參數,有如下方法:x0dx0ax0dx0a1.在Activity里注冊一個BroadcastReceiver,Service完成某個任務就可以發一個廣播,接岩型收器收銷山到廣播後通知activity做相應的操作。x0dx0a2.使用bindService來關聯Service和Application,應用.apk里的所有組件一般情況都運行在粗斗猜同一個進程中,所以不需要用到IPC,bindService成功後,Service的Client可以得到Service返回的一個iBinder引用,具體的參見Service的文檔及onBind的例子,這樣Service的引用就可以通過返回的iBinder對象得到,如x0dx0apublic class LocalService extends Service {x0dx0a // This is the object that receives interactions from clients. Seex0dx0a // RemoteService for a more complete example.x0dx0a private final IBinder mBinder = new LocalBinder();x0dx0ax0dx0a public class LocalBinder extends Binder {x0dx0a LocalService getService() {x0dx0a return LocalService.this;x0dx0a }x0dx0a }x0dx0ax0dx0a @Overridex0dx0a public IBinder onBind(Intent intent) {x0dx0a return mBinder;x0dx0a }x0dx0a}x0dx0ax0dx0a之後Client通過這個iBinder對象得到Service對象引用之後,可以直接和Service通訊,比如讀取Service中的值或是調用Service的方法。
㈡ Android Activity之間傳遞對象及對象數組
假設對象為People類,包含信息姓名和年齡:
方法一:Serializable
必須條件:類實現了Serializable介面
傳遞對象:
傳遞端:
接收端:
傳遞對象空兆判數組:
傳遞端:
接收端:
方法二:Parcelable
必須條件:類實現了Parcelable介面
傳遞對象:
傳遞端:
接收端:
傳遞對象數組:
傳遞端:
接收端:
可以發現在Parcelable中需實現public int describeContents()、 publicvoid writeToParcel(Parcel parcel, int arg1),還需要在添加一個靜態成員變數CREATOR:public static final Parcelable.Creator CREATOR。
區別:
1.Serializable的實現,只需要implements Serializable即可。這只是給對象打了一個標記,系統會自動將其序列化。猜衡
2.Parcelabel的實現,不僅需要implements Parcelabel,還需要在類中添加一個靜態成員變數CREATOR,這個變數需要實現 Parcelable.Creator 介面。
3.在使用內存的時候,Parcelable 類比Serializable性能高,所以推薦使用Parcelable類。4.Serializable在序列化的時候會產生斗改大量的臨時變數,從而引起頻繁的GC。
5.Parcelable不能使用在要將數據存儲在磁碟上的情況,因為在外界有變化的情況下Parcelable不能很好的保證數據的持續性。