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();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Web] HTTP란 무엇인가 - 1Hypertext는 쉽게 말해 하이퍼링크가 들어간 텍스트, 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트라고 이해하면 된다. Hypertext가 쓰인 기술 중 가장 중요한 두 가지가 바로 HTML과 HTTP이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.