[TOC]
## 跨进程 Messenger 通信
~~~
public class TestServiceActivity {
Messenger mMessenger ;
public void send() {
if(mMessenger != null){
Message message = Message.obtain(null, 444);
Bundle data = new Bundle();
data.putString("msg", "hahhaha");
message.setData(data);
try {
mMessenger.send(message);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mMessenger = new Messenger(service);
Log.i("wjf", "onServiceConnected IBinder = "+ service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
public void bindService(){
Intent intent = new Intent(TestServiceActivity.this, MyService.class);
bindService(intent,serviceConnection,BIND_AUTO_CREATE);
}
~~~
~~~
public class MyService extends Service {
private static class MyMessageHandle extends Handler{
@Override
public void handleMessage(Message msg) {
Log.i("MyService","message = " + msg);
}
}
private final Messenger mMessager = new Messenger(new MyMessageHandle());
@Nullable
@Override
public IBinder onBind(Intent intent) {
return mMessager.getBinder();
}
}
~~~
![](https://uploader.shimo.im/f/qpgM8KllEpUsMMH9.png!thumbnail)
## 跨进程 AIDL 通信
//todo
## IntentService
IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们手动去控制或stopSelf()。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以
## 参考资料
[Android Service完全解析,关于服务你所需知道的一切(上)](https://blog.csdn.net/guolin_blog/article/details/11952435)
[ Android Service完全解析,关于服务你所需知道的一切(上)](https://blog.csdn.net/guolin_blog/article/details/9797169)
[Service 详解](https://juejin.cn/post/6857132657055268871)
[说一说 Service 的启动流程](https://juejin.cn/post/6857132385067892743)
[Service 的绑定原理](https://juejin.cn/post/6923369663489376269)
- Android
- 四大组件
- Activity
- Fragment
- Service
- 序列化
- Handler
- Hander介绍
- MessageQueue详细
- 启动流程
- 系统启动流程
- 应用启动流程
- Activity启动流程
- View
- view绘制
- view事件传递
- choreographer
- LayoutInflater
- UI渲染概念
- Binder
- Binder原理
- Binder最大数据
- Binder小结
- Android组件
- ListView原理
- RecyclerView原理
- SharePreferences
- AsyncTask
- Sqlite
- SQLCipher加密
- 迁移与修复
- Sqlite内核
- Sqlite优化v2
- sqlite索引
- sqlite之wal
- sqlite之锁机制
- 网络
- 基础
- TCP
- HTTP
- HTTP1.1
- HTTP2.0
- HTTPS
- HTTP3.0
- HTTP进化图
- HTTP小结
- 实践
- 网络优化
- Json
- ProtoBuffer
- 断点续传
- 性能
- 卡顿
- 卡顿监控
- ANR
- ANR监控
- 内存
- 内存问题与优化
- 图片内存优化
- 线下内存监控
- 线上内存监控
- 启动优化
- 死锁监控
- 崩溃监控
- 包体积优化
- UI渲染优化
- UI常规优化
- I/O监控
- 电量监控
- 第三方框架
- 网络框架
- Volley
- Okhttp
- 网络框架n问
- OkHttp原理N问
- 设计模式
- EventBus
- Rxjava
- 图片
- ImageWoker
- Gilde的优化
- APT
- 依赖注入
- APT
- ARouter
- ButterKnife
- MMKV
- Jetpack
- 协程
- MVI
- Startup
- DataBinder
- 黑科技
- hook
- 运行期Java-hook技术
- 编译期hook
- ASM
- Transform增量编译
- 运行期Native-hook技术
- 热修复
- 插件化
- AAB
- Shadow
- 虚拟机
- 其他
- UI自动化
- JavaParser
- Android Line
- 编译
- 疑难杂症
- Android11滑动异常
- 方案
- 工业化
- 模块化
- 隐私合规
- 动态化
- 项目管理
- 业务启动优化
- 业务架构设计
- 性能优化case
- 性能优化-排查思路
- 性能优化-现有方案
- 登录
- 搜索
- C++
- NDK入门
- 跨平台
- H5
- Flutter
- Flutter 性能优化
- 数据跨平台