是一个应用:
public class sadanplay extends Service {
@Override
public IBinder onBind(Intent intent) {
System.out.println("onBind");
return new myBinder();
}
public class myBinder extends ISmysadanplay.Stub{
@Override
public void callsadanplay() {
sadanplay();
}
}
@Override
public void onCreate() {
System.out.println("_____------__---");
super.onCreate();
}
public void sadanplay(){
System.out.println("-------欢迎使用------");
}
@Override
public void onDestroy() {
System.out.println("--------------onDestroy---------");
super.onDestroy();
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
}
package com.example.paykalad;
interface ISmysadanplay {
void callsadanplay();
}
把这个方法的后缀名改成aidl
需要进行通信的程序2
把上面的aidl文件复制到程序2中包名也要一样
public class MainActivity extends Activity {
private Intent intent;
private ISmysadanplay is;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intent=new Intent();
intent.setAction("sadanplay");//程序1中定义的动作
}
public void bind(View view){
bindService(intent, new myconn(), BIND_AUTO_CREATE);
}
public class myconn implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
is=ISmysadanplay.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
public void play(View view){
try {
is.callsadanplay();
} catch (RemoteException e) {
e.printStackTrace();
}
}