代码:
public void funclick(View view){
Intent _intent = new Intent(MainActivity.this,MyService.class);
bindService(_intent, conn, BIND_AUTO_CREATE);
}
private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
String mynameStr = ((MyBinder)service).helloWorld("bitch");
Log.e("mynameStr", mynameStr+"~");
}
};
对于这种一个service.有什么不同呢。服务端的代码能够參照我上篇博文,通过打印log发现。onStart或者onstartCommand并没有被调用哦。
到此,我们仍然不会满足,由于我们仅仅是调用了MyBinder中的方法,并没有调用Myservice方法嘛。所以。我们要添加一个返回MyserVice的方法:
package com.example.mydownload;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
//实现接口中的方法
public class MyService extends Service {
//接口对象
IBinder mybBinder = new MyBinder();
class MyBinder extends Binder{
<span style="color:#ff0000;">public MyService getMyService(){
return MyService.this;
}</span>
public String helloWorld(String name){
return name;
}
}
@Override
public void onCreate() {
Log.e("log", "onCreate");
super.onCreate();
}
Log.e("log", "hello,bitch!");
@Override
public void onDestroy() {
Log.e("log", "onDestroy");
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("log", "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent arg0) {
return mybBinder;
}
}
然后改动client代码:
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
((MyBinder)service).getMyService().helloService();
}