Service 服务

自定义类 继承Service 

内部类继承Binder,内写需要的方法(注意一般Service在UI线程,别左耗时操作)

例子如下:

public class localService extends Service {

    private finalI Binder mBinder=new localBinder();

    public class localBinder extends Binder {

        public intCompare(inta,intb){

        returna>b?a:b;

    }

    localServicegetService(){

        return localService.this;

        }

    }

@Nullable

@Override

publicIBinderonBind(Intent intent) {

    returnmBinder;

    }

}

要在使用的Activity中实例化Connection(匿名内部类)

获取到Binder之后就可以调用方法了。

private Service Connection connection=new ServiceConnection() {

@Override

public void onService Disconnected(ComponentName name) {

}

@Override

public void onServiceConnected(ComponentName name,IBinder service) {

myBinder= (localService.localBinder) service;

myBinder.Compare(a,b);

}

};

绑定,绑定之后就能用Binder

Intentbind Intent =new Intent(this,localService.class);

bindService(bindIntent,connection,BIND_AUTO_CREATE);

记得在AndroidManifest 里添加

AIDL 跨进程服务

service

public classMyServiceextendsService {

private final staticStringTAG="ALIPaySeivice";

public classlocalBinderextendsBinder {

MyServicegetService(){

returnMyService.this;

}

}

private finalMAIDL.StubmBinder=newMAIDL.Stub(){

@Override

public intCompare(inta, intb)throwsRemoteException {

returna>b?a+1:b+1;

}

@Override

public voidPAY()throwsRemoteException {

Log.v(TAG,"购买");

}

};

AndroidManifest:

service (格式原因没加"<")

android:name=".MyService"

android:process=":remote">

/service>

uses-permission android:name="com.neo1946.remoteservice.MAIDL"/>

调用:用TAG调用

private ServiceConnection connection2=new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

}

@Override

public void onServiceConnected(ComponentName name,IBinder service) {

myAIDLService= MAIDL.Stub.asInterface(service);

try{

username.setText("Other service");

inta =Integer.parseInt(et1.getText().toString());

intb = Integer.parseInt(et2.getText().toString());

password.setText(myAIDLService.Compare(a,b)+"");

}catch(RemoteException e) {

e.printStackTrace();

}

}

};

Intent intent2 = new Intent();intent2.setAction("com.neo1946.remoteservice.MAIDL");intent2.setPackage("com.neo1946.remoteservice");bindService(intent2, connection2, BIND_AUTO_CREATE);

参考文章:http://blog.csdn.net/guolin_blog/article/details/9797169?from=singlemessage

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 描述 Service通常总是称之为“后台服务”,其中“后台”一词是相对于前台而言的,具体是指其本身的运行并不依赖于...
    pkqgo阅读 706评论 1 3
  • 定义 service Android 中的服务,可以理解为一个没有界面的 activity,存在的意义就是运行本应...
    前行的乌龟阅读 704评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,981评论 19 139
  • 我不顺路,但是我就是想送你回家。你呢?
    会想多的姑娘阅读 181评论 0 0
  • 11月17日 第九章 由此可见隐士不只是符合上主形象的教父,也代表着隐修的方法和精神。 三种认知整合:超越认知的直...
    自我成长分享阅读 300评论 0 0