2013-11-26 269 views
3

我正在運行檢測活動測試。等待UI線程完成

因爲我需要在活動的其中一個UI元素中執行一些UI操作。每當執行點擊被稱爲

settingsActivity.runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     testSwitch.performClick(); 
    } 
}); 

每次我打的can not perform this action after onSaveInstanceState

所以我在活動中像這樣的UI線程這樣做。

幾件事情我已經做了:

  • 我試圖把代碼後Thread.sleep(),但它無法正常工作。
  • 我沒有完成拆卸中的活動。所以,我不知道 活動如何被破壞。

乾杯, Saurav

+0

正如錯誤所述,您正在做的是您嘗試通過執行按鈕單擊與UI元素進行交互,但您的活動可能已暫停。 – hendrix

+0

感謝smitalm的迴應......但我如何知道活動已暫停? – saurav

+1

做一些日誌來找出發生的事情。例如記錄所有活動的生命週期(onCreate,onResume,onStart,onPause,onStop,onDestroy ...) –

回答

3

只做一件事情 沒有呼叫超()。 我認爲它的Bug對API等級> 11

@Override 
protected void onSaveInstanceState(Bundle outState) { 
//No call for super(). Bug on API Level > 11. 
} 

如果您需要保存的實例,並添加了一些你outState包,你可以使用以下命令:

@Override 
protected void onSaveInstanceState(Bundle outState) { 
outState.putString("WORKAROUND_FOR_BUG_19917_KEY", "WORKAROUND_FOR_BUG_19917_VALUE"); 
super.onSaveInstanceState(outState); 
} 

希望它能解決你的問題。 Goood luck :)

+0

那麼解決了我的問題......謝謝Khurram ... – saurav