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();
		}

좋은 웹페이지 즐겨찾기