原创 廣播和Service喚醒被殺死的android app

1. 靜態廣播喚醒 廣播的exported屬性和enabled屬性 exported默認爲true表示這個廣播可以接收來自其他app發送的廣播,只要條件滿足,exported設置成false表示只能是這個app內發送的廣播才能接

原创 Android多進程導致多次初始化Application

最近項目中遇到一個問題:APP運行2個進程,然後發現APP的Application的onCreate被調用了兩次,導致Application初始化了兩次,造成app啓動的時候非常緩慢而且已啓動佔用的內存很大,因爲兩個進程都初始化了

原创 Java多線程鎖異常:IllegalMonitorStateException

在項目多線程編程中用了ReentrantLock配合Condition來控制線程的加鎖和解鎖: private void signalAllConnect() { final ReentrantLock lock

原创 Activity啓動流程和源碼解析

↓雙擊 Markdown插件,就可以開始編輯啦。 APP進程 ActivityThread的啓動 public static void main(String[] args) { ActivityThread th

原创 關於Android系統休眠後,線程的執行情況

理論上,android系統休眠後,app進程會被掛起,所以相關的執行線程也會被掛起,那些java線程的操作例如:wait,await,sleep,循環阻塞,handler的delay,線程池的delay操作都會被掛起,因爲它們使用

原创 APP啓動優化案例

佈局優化 窗體的佈局結構: 窗體佈局層次: 窗體繪製: 上圖中是表明DecorView的加載耗時:31.89ms 檢測方法耗時 手錶性能太低,無法使用traceview去跟蹤方法耗時,會造成ANR aop的方式還要再集成或

原创 Android IM SDK開發設計大綱

IM SDK開發 數據協議 數據編解碼與數據加解密 TLV編解碼的JAVA實現與優化 數據加解密 SDK架構設計 公共部分 TLV編解碼 數據存儲與共享 跨進程通信管理 配置管理 自定義異常 大數據埋點統計 APP進程

原创 Android如何降低service被殺死概率

讓app 的service常駐其實是很流氓的做法,但是需求擺在那裏。。。 但是要清除一點:想百分百保活service在當前是無法做到的,只能降低service被殺死的概率,曾經看了多少篇網上大神的牛逼博客,從各個層面分析如何讓s

原创 IM推送Android客戶端之重連策略

話不多直接進入主題 所謂重連就是Android客戶端額度TCP連接斷開之後自動進行連接,但是有時候會遇到一直重連不上的情況,那麼就不能一直頻繁的進行重連操作,畢竟在手機休眠的時候重連操作可能會有網絡數據通信,手機會被喚醒,等重連

原创 進程保活之——這絕對不是扯淡

之前寫了篇關於service保活的博客,其實這麼長時間下來,感覺service的存活率並沒有什麼提升,提升的只是心裏安慰。。。 廢話不多說,試了下酷狗音樂即使關掉了任何受保護開關,自啓動開關,在華爲6.0系統鎖定屏幕後依然可以保持

原创 IM推送之客戶端SDK開發(二)

IM Android端SDK開發過程中遇到的問題 華爲手機 我們曾經採用Native守護進程保活的方案做到了在android5.0系統以下的手機可以做到push進程被殺死後能夠重啓,後來在華爲一些機型手機上出現嚴重的耗電問題,同

原创 Eventbus是如何實現事件分發的

Evenbus是基於java反射機制來實現事件分發的 EventBus.getDefault().register(this);這裏的this一般情況下是Activity類,但其實它只要是一個Object就可以了,Eventbu

原创 Java中整形和byte數組相互轉換,支持正負數

/** * 字節數組轉int,適合轉高位在前低位在後的byte[] * * @param bytes * @return */ public static long by

原创 Android中的進程之間的通信

Android中的進程通信主要有以下種 1.廣播 廣播是比較常用的進程間通信的方式,而且實現起來也比較簡單 缺點:某些手機對於靜態註冊的廣播的發送和接收延遲非常嚴重,例如一些配置很低的手機,華碩,聯想的部分低配手機就對靜態註冊的

原创 Android幾種彈窗的實現

直接使用android sdk裏面的Dialog以及子類AlertDialog,這種彈窗要求依賴Activity環境,如果傳入的context不是activity就會報錯,所以這種彈窗是和界面強相關的 使用系統彈窗:TYPE_S