電話應用熱啟動用戶體驗優化

<h2 align = "center">電話應用熱啟動用戶體驗優化</h2>


熱啟動定義:在最底層Activity,點擊返回按鈕;Activity消失后,點擊桌面圖標或者從最近任務中打開,應用MainActivity重新啟動,這次啟動屬于熱啟動。

點擊返回按鈕,默認會觸發Activity的finish操作,但是不會殺掉進程。所以應用熱啟動時間,可以認為是創建第一個Activity的時間。加快MainActivity的創建和顯示,就是熱啟動優化的核心。

1. 對比其他廠商樣機和第三方App

  1. 其他樣機,如小米、魅族,在電話應用的最底層Activity,點擊返回按鈕,沒有觸發Activity的finish。
  1. 第三方App,如微信、QQ,在應用首Activity,點擊返回按鈕,也沒有觸發Activity的finish。
  1. 可以推測,上述應用,都對Back鍵的邏輯進行了改寫,按Back鍵和Home的邏輯差不多,僅僅是將應用切換到后臺,并不會銷毀Activity。

2. 電話應用使用上述辦法優化熱啟動前后對比

將電話最底層Activity的返回按鈕邏輯,修改成和home一樣時的內存變化如下。

1) 修改前

按Back退出應用

點擊桌面圖標啟動應用

2) 修改后

按Back退出應用

點擊桌面圖標啟動應用

從上述現象可以得出:電話的主界面Activity鎖占據的內存不大,大概1~2M左右。修改后,點擊back和重新打開,應用穩定后內存幾乎沒變化。所以在用戶點擊Back按鈕時,完全可以保留該Activity,達到快速熱啟動的目的。

3. 具體實現

0.代碼實現如下

@Override
public void onBackPressed() {
  if (!moveTaskToBack(true)) {
      super.onBackPressed();
  }
}

1.Android本身的設計,就是允許App自定義Back的行為的,所以,理論上所有類型的App都可以采用該方案優化。

2.主界面占據內存比較少的應用可以直接添加代碼對應代碼即可

3.對于在首界面占用內存資源比較多的應用,應該檢查Activity 和 Fragment 的 destroy 方法,將釋放資源的操作移動到 pause 或 stop,然后再檢查create方法,將加載資源操作移動到 resume 或 start 。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容