Android知识点总结Service知识点

1.service的生命周期
2.service的启动方式
3.IntentService与Service的区别
4.跨进程调用AIDL

Q. Android的Service生命周期及及启动方式
A.Service的启动主要有两种方式
1.startService()只能启动一次(多次调用只会多次出发onStartCommand方法),并且生命周期不会因为调用者的关闭而关闭,除非调用stopService方法手动关闭.
2.bindService(),service服务会随着调用者的关闭而自动销毁,如果你的调用者关心service中的某些数据,那么建议使用bindService,通过Binder可以桥接service与调用者,这样就可以很容易获取service中的数据.

service生命周期

特别注意
startService()与bindService()一起混合使用的情况是存在的,假设我们需要在调用者退出的情况下扔保持服务,但是又希望能够获取到service中的数据内容.

IntenService与Service

IntentService是对Service的扩展,它可以在onHandleIntent()方法中处理耗时的事件,另外可以启动 IntentService 多次,而每一个耗时操作会以工作队列的方式在IntentService 的 onHandleIntent 回调方法中执行,并且每次只会执行一个工作线程,执行完第一个再执行第二个,以此类推,当任务执行完毕之后,它会自动关闭,无需手动释放

AIDL跨进程调用(Android Interface Definition Language)

//TODO

AIDL跨进程调用 会涉及到 对象的序列化及反序列化,Android中有两种对象的列化及反序列化方式,一种是java原生的Serializable,以及Android上新的实现方式 Parcelable

一个典型的Parcelable实现(或者说模板):

public class MyParcelable implements Parcelable {
     private int mData;

     public int describeContents() {
         return 0;
     }

     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mData);
     }

     public static final Parcelable.Creator CREATOR
             = new Parcelable.Creator() {
         public MyParcelable createFromParcel(Parcel in) {
             return new MyParcelable(in);
         }

         public MyParcelable[] newArray(int size) {
             return new MyParcelable[size];
         }
     };
     
     private MyParcelable(Parcel in) {
         mData = in.readInt();
     }
 }

推荐阅读:
Parcelable

你可能感兴趣的:(Android知识点总结Service知识点)