Messenger를 사용하여 서비스 간 양방향 통신
MainActivity 클래스:
package com.example.messengeservicetest;
import android.app.Activity;
import android.app.Service;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.text.style.IconMarginSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Messenger sender;
private ServiceConnection conn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bind = (Button)findViewById(R.id.bind);
Button start = (Button)findViewById(R.id.start);
Button send = (Button)findViewById(R.id.send);
bind.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getStart();
}
});
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MessengerService.class);
startService(intent);
}
});
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sendCount();
}
});
}
// MessengerService
private void getStart(){
conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
sender = new Messenger(service);
}
};
Intent intent = new Intent(this, MessengerService.class);
// startService(intent);
bindService(intent, conn, Service.BIND_AUTO_CREATE);
}
//
private void sendCount(){
Message msg = new Message();
msg.arg1 = 20;
msg.arg2 = 20;
try {
sender.send(msg);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(conn);
}
}
MessengerService.java 클래스:
package com.example.messengeservicetest;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.util.Log;
public class MessengerService extends Service {
Messenger messenger;
Handler handler;
int a, b;
int sum = 0;
@Override
public IBinder onBind(Intent intent) {
return messenger.getBinder();
}
@Override
public void onCreate() {
super.onCreate();
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
a = msg.arg1;
b = msg.arg2;
}
};
messenger = new Messenger(handler);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int sum = subSum(a, b);
System.out.println(sum + "");
return super.onStartCommand(intent, flags, startId);
}
private int subSum(int a, int b){
int sum = a + b;
return sum;
}
}
Android Manifest에서.xml에 등록:
<service android:name=".MessengerService"></service>
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
.NET에서 Worker Service 사용 시작Worker Service는 템플릿을 사용하여 구축됩니다.NET 프로젝트, 이 템플릿은 일반적인 콘솔 응용 프로그램을 더욱 강하게 할 수 있는 유용한 기능을 제공합니다.Worker Service는 호스트(Host)라...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.