client Ibinder 인터페이스 대상을 어떻게 호출합니까
2240 단어 client
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+"~");
}
};
이런 서비스에 대해서뭐가 달라요?서비스 측의 코드는 나의 이전 블로그를 참조할 수 있으며, 인쇄log를 통해 발견할 수 있다.onStart나 onstart Command는 호출되지 않았습니다.
지금까지 우리는 여전히 만족할 수 없다. 왜냐하면 우리는 단지 My Binder의 방법을 호출했을 뿐 My 서비스 방법을 호출하지 않았기 때문이다.그래서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();
}