2015年3月16日月曜日

[安藤]android如何測試系統砍掉app之後的回復流程

當app的設計複雜到需要一個singleton的設計來keep住各個頁面的操作資料的時候, 也許,你會發現你的app在離開一段時間再回來用的時候會感覺像是crash般的重頭開始。 這是因為android把你的app給kill掉了。 

android會主動停止一個app的運作,目前我所知道的條件:

  • app退到背景,持續一段時間(印象是約30分鐘)
  • 使用其他的app導致記憶體吃緊

要是在ADT開發環境以debug模式執行app的話,你會發現debug會中斷。
這時再點選剛剛還在debug的app,有可能會因為app被砍,singleton object也隨之不見,
忘記保護此狀況而出現app啟動到一半就crash的狀況。
(可能是只有我這個半桶水coder會遇到吧...也許?)


但是要模擬以上的狀況,不管是一直開起其他app導致記憶體不足,還是退到背景等個30分鐘,都是相當麻煩跟花時間的動作。在stack overflow裡面找到可以簡單重現此動作的解決方案,提出來給大家參考。

操作流程:
  1. 使用ADT的debug run啟動你的app,運行到想測試的狀態或Activity
  2. 按手機/avd的home鍵退出app
  3. ADT啟動DDMS頁面(程式碼編輯視窗右上角的視窗切換區沒有的話,選擇adt的menu tab上面的「windows」->「open perspective」->「DDMS」)
  4. 在視窗的左上角應該會看到正在連線的device,下面有一大堆正在運行的task的列表。
    找到正在debug的app的package name,滑鼠點擊該package name,然後點選devices icon右邊的icon列,裡面有一個紅色的stop icon。(滑鼠停在icon上面會出現提示「stop process」)。點選它之後,app就被系統kill了。
  5. 這時再叫出手機/avd的task manager,點選要debug的app,就可以重現app回復流程。

這樣就可以debugapp回復流程了。




參考文件:
http://stackoverflow.com/a/18695974

0 件のコメント:

コメントを投稿