本文共 4698 字,大约阅读时间需要 15 分钟。
创建服务和Binder的子类
public class MyServerce extends Service { @Override public void onCreate() { super.onCreate(); Log.d("MyServerce","创建服务"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d("MyServerce","每次服务启动时候调用"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { Log.d("MyServerce","服务销毁"); super.onDestroy(); } @Override public void onConfigurationChanged(Configuration newConfig) { Log.d("MyServerce","配置更改"); //服务停止 stopSelf(); super.onConfigurationChanged(newConfig); } @Override public void onLowMemory() { Log.d("MyServerce","内存不足"); super.onLowMemory(); } @Override public void onTrimMemory(int level) { Log.d("MyServerce","压缩处理内存"); super.onTrimMemory(level); } @Nullable @Override public IBinder onBind(Intent intent) { return myBinder; } @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); } @Override public void onRebind(Intent intent) { super.onRebind(intent); } @Override public void onTaskRemoved(Intent rootIntent) { super.onTaskRemoved(rootIntent); } //内部类MyBinder private MyBinder myBinder = new MyBinder(); class MyBinder extends Binder { public MyBinder() { super(); } public void startDownload(){ } public int getProgress(){ return 0; } @Override public void attachInterface(IInterface owner, String descriptor) { super.attachInterface(owner, descriptor); } @Override public String getInterfaceDescriptor() { return super.getInterfaceDescriptor(); } @Override public boolean pingBinder() { return super.pingBinder(); } @Override public boolean isBinderAlive() { return super.isBinderAlive(); } @Override public IInterface queryLocalInterface(String descriptor) { return super.queryLocalInterface(descriptor); } @Override protected boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { return super.onTransact(code, data, reply, flags); } @Override public void dump(FileDescriptor fd, String[] args) { super.dump(fd, args); } @Override public void dumpAsync(FileDescriptor fd, String[] args) { super.dumpAsync(fd, args); } @Override public void linkToDeath(DeathRecipient recipient, int flags) { super.linkToDeath(recipient, flags); } @Override public boolean unlinkToDeath(DeathRecipient recipient, int flags) { return super.unlinkToDeath(recipient, flags); } @Override protected void finalize() throws Throwable { super.finalize(); } @Override protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) { super.dump(fd, fout, args); } }}
在Activity中实现绑定
public class Test1Activity extends Activity implements View.OnClickListener{ private MyServerce.MyBinder myBinder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test1); ((Button)findViewById(R.id.button_start)).setOnClickListener(this); ((Button)findViewById(R.id.button_stop)).setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.button_start: // Intent bindintent = new Intent(this,MyServerce.class); //绑定服务 bindService(bindintent,serviceConnection,BIND_AUTO_CREATE); break; case R.id.button_stop: //解绑服务 unbindService(serviceConnection); break; default: break; } } private ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { Log.d("ServiceConnection","服务成功绑定"); myBinder = (MyServerce.MyBinder) iBinder; myBinder.startDownload(); myBinder.getProgress(); } @Override public void onServiceDisconnected(ComponentName componentName) { Log.d("ServiceConnection","服务解除绑定"); } };}
后面再写前台服务和IntentService,以及服务下载,写的比较没有逻辑见谅
转载地址:http://umnvb.baihongyu.com/