service常见的有2种方式,本地service以及remote service。这2种的生命周期,同activity的通信方式等,都不相同。关于这2种service如何使用,这里不做介绍,只是介绍一些被遗漏的地方1.远程Service(AIDL方式)package com.j ...
service常见的有2种方式,本地service以及remote service。
这2种的生命周期,同activity的通信方式等,都不相同。
关于这2种service如何使用,这里不做介绍,只是介绍一些被遗漏的地方
1.远程Service(AIDL方式)
package com.joyfulmath.samples.basecontrol;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.IBinder;import android.os.RemoteException;import com.joyfulmath.samples.R;import com.joyfulmath.samples.TraceLog;import org.androidannotations.annotations.Click;import org.androidannotations.annotations.EActivity;/** * Created by Administrator on 2016/10/11 0011. * service connect activity samples */@EActivity(R.layout.activity_connect_service)public class ServiceConActivity extends Activity { private ISamplesAidlInterface binder; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { TraceLog.i(); binder = ISamplesAidlInterface.Stub.asInterface(service); if(binder!=null) { try { binder.registerCallBack(mCallBack); } catch (RemoteException e) { e.printStackTrace(); } } } @Override public void onServiceDisconnected(ComponentName name) { TraceLog.i(); binder = null; } }; private ICallBack.Stub mCallBack = new ICallBack.Stub() { @Override public void onServiceStateChanged(int s) throws RemoteException { TraceLog.i(String.valueOf(s)); } }; public void bindSamplesService() { TraceLog.i(); Intent intent = new Intent(this,ServiceSamples.class);// intent.setAction("com.joyfulmath.service.samples"); bindService(intent,connection,BIND_AUTO_CREATE); } public void unBindSamplesService() { TraceLog.i(); if(binder!=null) { try { binder.unRegisterCallBack(mCallBack); } catch (RemoteException e) { e.printStackTrace(); } } unbindService(connection); } @Click(R.id.btn_connect) void connectClick() { TraceLog.i(); bindSamplesService(); } @Click(R.id.btn_unconnect) void unConnectClick() { TraceLog.i(); unBindSamplesService(); } @Click(R.id.btn_do) void doAction() { if(binder!=null) { try { int r = binder.doBackground("action"); TraceLog.i(String.valueOf(r)); } catch (RemoteException e) { e.printStackTrace(); } } } @Override protected void onDestroy() { super.onDestroy(); TraceLog.i(); unBindSamplesService(); }}
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:Android 四大组件之再论service
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。