本地服务code:`
package app.project.service;

import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.RemoteException;
import android.support.annotation.Nullable;
import android.util.Log;
import android.widget.Toast;

import app.project.IMyAidlInterface;

public class LocalService extends Service {
MyBinder binder;
MyConn conn;

@Nullable@Overridepublic IBinder onBind(Intent intent) {    return binder;}@Overridepublic void onCreate() {    super.onCreate();    binder = new MyBinder();    conn = new MyConn();}class MyBinder extends IMyAidlInterface.Stub {    @Override    public String getServiceName() throws RemoteException {        return LocalService.class.getSimpleName();    }}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {    Toast.makeText(LocalService.this, " 本地服务started", Toast.LENGTH_SHORT).show();    this.bindService(new Intent(LocalService.this, RomoteService.class), conn, Context.BIND_IMPORTANT);    return START_STICKY;}class MyConn implements ServiceConnection {    @Override    public void onServiceConnected(ComponentName name, IBinder service) {    }    @Override    public void onServiceDisconnected(ComponentName name) {        Toast.makeText(LocalService.this, "远程服务killed", Toast.LENGTH_SHORT).show();        //开启远程服务        LocalService.this.startService(new Intent(LocalService.this, RomoteService.class));        //绑定远程服务        LocalService.this.bindService(new Intent(LocalService.this, RomoteService.class), conn, Context.BIND_IMPORTANT);    }}@Overridepublic void onDestroy() {    super.onDestroy();    //开启远程服务    LocalService.this.startService(new Intent(LocalService.this, RomoteService.class));    //绑定远程服务    LocalService.this.bindService(new Intent(LocalService.this, RomoteService.class), conn, Context.BIND_IMPORTANT);}

}

远程服务code:

package app.project.service;import android.app.Service;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.os.IBinder;import android.os.RemoteException;import android.support.annotation.Nullable;import android.util.Log;import android.widget.Toast;import app.project.IMyAidlInterface;public class RomoteService extends Service {    MyConn conn;    MyBinder binder;    @Nullable    @Override    public IBinder onBind(Intent intent) {        return binder;    }    @Override    public void onCreate() {        super.onCreate();        conn = new MyConn();        binder = new MyBinder();    }    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        Toast.makeText(this, " 远程服务started", Toast.LENGTH_SHORT).show();        this.bindService(new Intent(this, LocalService.class), conn, Context.BIND_IMPORTANT);        return START_STICKY;    }    class MyBinder extends IMyAidlInterface.Stub {        @Override        public String getServiceName() throws RemoteException {            return RomoteService.class.getSimpleName();        }    }    class MyConn implements ServiceConnection {        @Override        public void onServiceConnected(ComponentName name, IBinder service) {        }        @Override        public void onServiceDisconnected(ComponentName name) {            Toast.makeText(RomoteService.this, "本地服务killed", Toast.LENGTH_SHORT).show();           //最关键的还是这两句话            //开启本地服务            RomoteService.this.startService(new Intent(RomoteService.this, LocalService.class));            //绑定本地服务            RomoteService.this.bindService(new Intent(RomoteService.this, LocalService.class), conn, Context.BIND_IMPORTANT);        }    }    @Override    public void onDestroy() {        super.onDestroy();        //开启本地服务        RomoteService.this.startService(new Intent(RomoteService.this, LocalService.class));        //绑定本地服务        RomoteService.this.bindService(new Intent(RomoteService.this, LocalService.class), conn, Context.BIND_IMPORTANT);    }}

aidl文件:
package app.project;

// Declare any non-default types here with import statements

interface IMyAidlInterface {
String getServiceName();
}
配置文件

<service            android:name=".service.LocalService"            android:enabled="true"            android:exported="true" />        <service            android:name=".service.RomoteService"            android:process=":romoteservice"            android:enabled="true"            android:exported="true">service>

更多相关文章

  1. mainfest文件中android属性
  2. ~/.dirlst 文件
  3. Android 读取和保存文件(手机内置存储器)
  4. Android——文件存储
  5. Android layout文件中 '?' 的作用
  6. :如何安装apk文件在Android仿真器中
  7. Android官方架构组件DataBinding双向绑定篇: 观察者模式的殊途同
  8. Android build.gradle文件详解(转述自《Android第一行代码》第二

随机推荐

  1. Android攻城师需要掌握的技术
  2. Android MediaPlayer的核心原理
  3. 在 Android 上使用 XML 传输数据(附例子
  4. Android动画效果 translate、scale、alph
  5. Android(安卓)学习深入之路(应用层)
  6. Android monkey介绍
  7. Android Webview开发基本使用总结(一)
  8. 又一年对Android消息机制(Handler&Looper)
  9. Android 内容提供器---创建内容提供器(元
  10. Android模拟器与真机的9个区别