線程交互的幾種方式
- 線程啟動, A 啟動 B,
- 線程終結(jié), 不要用 Stop , 用 Interrupt
- 線程的等待,喚醒,同步 - wait notify synchronized
- Handler HandlerThread Looper
- Asynctask 內(nèi)存泄露 和 Thread 一樣的原因
- Service - IntentService 不要當做線程使用
Android 幾種線程交互
- Executors: 線程池, 四種, 使用最簡單, 開啟后臺線程執(zhí)行任務(wù)
- Handler && Asynctask: 需要把后臺的任務(wù), 推送到 UI 線程時, 使用
- Asynctask: Static + WeakReference 可以解決內(nèi)存泄露, 但是內(nèi)存泄露和內(nèi)部類沒關(guān)系, 是線程的關(guān)系, 線程持有 GCRoot 的引用
- HandlerThread: Looper.pared() && Looper.loop(), 幾乎沒有使用場景 ,
- 在 已經(jīng)運行 的指定的線程上,執(zhí)行代碼
- Service: 后臺任務(wù)的活動空間, 長時間活著, 其實還是在前臺, 耗時操作, 需要自己開線程
- IntentService: Service 子類, onHandleIntent() 執(zhí)行后臺代碼的位置, 代碼自動執(zhí)行, 完畢后 IntentService 自動關(guān)閉, 充當線程作用,
- eg: AlarmManage 定時拉取用戶信息, 需要用到 Service 且 很簡單的任務(wù)時使用