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

## 跨進程 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 性能優化
- 數據跨平臺