当前位置:网站首页>Cross process two-way communication using messenger
Cross process two-way communication using messenger
2022-06-13 06:22:00 【Novice Xiaowang】
Messenger : messenger
1. Client side usage Activity
private Messenger messenger;// messenger
// Handle messages from the server
Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MessagerService.MSG:
Log.e("TAG"," Received a response from the server :"+msg.getData().getString("msg"));
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Binding server
Intent intent = new Intent(this,MessagerService.class);
bindService(intent,connection,BIND_AUTO_CREATE);
}
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// establish Messenger from client to server
messenger = new Messenger(service);
Message message = Message.obtain(null,MessagerService.MSG);
Bundle bundle = new Bundle();
bundle.putString("msg"," Client message : Hello Server side ");
message.setData(bundle);
// take messenger Pass it to the server Create a server to client messenger
message.replyTo = new Messenger(handler);
try {
// Send message to server
messenger.send(message);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};2. Server use service
public static final int MSG = 1;
public Handler handler = new Handler(){
@SuppressLint("HandlerLeak")
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MSG:
Log.e("TAG",msg.getData().getString("msg"));
Log.e("TAG"," Received client message ");
// Get the client's Messenger object
Messenger messenger = msg.replyTo;
Message message = Message.obtain(null,MessagerService.MSG);
Bundle bundle = new Bundle();
bundle.putString("msg"," Hello, client , I've got the message ");
message.setData(bundle);
try {
messenger.send(message);
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
}
};
@Nullable
@Override
public IBinder onBind(Intent intent) {
return new Messenger(handler).getBinder();
}3.manifest in
<service android:name=".MessagerService" android:process=":remote"/>bring activity and service Not in a thread
边栏推荐
- Explication détaillée du triangle Yang hui
- [one · data 𞓜 simple implementation of the leading two-way circular linked list]
- Wechat applet: basic review
- Free screen recording software captura download and installation
- Failed to extract manifest from apk: processexception:%1 is not a valid Win32 Application.
- Applet Use of spaces
- Introduction to USB learning (I) -- Dongfeng night flower tree
- Dart class inherits and implements mixed operators
- DLL bit by bit
- [written examination questions of meituan]
猜你喜欢
随机推荐
Uni app disable native navigation bar
Echart histogram: echart implements stacked histogram
【var const let区别】
Echart rectangular tree diagram: simple implementation of rectangular tree diagram
JVM Foundation
[JS] array flattening
动态链接库嵌套样例
Status management --provider
Intelligent digital asset management helps enterprises win the post epidemic Era
本地文件秒搜工具 Everything
【新手上路常见问答】一步一步理解程序设计
微信小程序:全局状态变量的使用
线程池学习
USB debugging assistant 20181018 (v1.3)
Echart柱状图:堆叠柱状图value格式化显示
Wechat applet (get location)
[written examination questions of meituan]
Download and installation of universal player potplayer, live stream m3u8 import
The boys x pubgmobile linkage is coming! Check out the latest game posters
Custom view








![A glimpse of [wechat applet]](/img/ef/17564759e720b06c2bd496d1db7544.jpg)