天天看點

Android調用notifyDataSetChanged崩潰UI操作

UI操作

Android的UI操作并不是線程安全的,UI操作必須在UI線程中執行.
在非UI線程中更新UI的結果就是carsh,提示
Only the original thread that created a view hierarchy 
can touch its views           

runOnUiThread

Android提供了runOnUiThread接口用于更新Ui,
在需要更新Ui時,建立一個Runable對象傳遞給runOnUiThread
就能夠安全的更新Ui           

示例代碼

截取部分代碼:
在需要更新listview時
    public void update() {
        mAdapter.addPeer(listArray[i]); //增加listview内容

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                mAdapter.notifyDataSetChanged(); //Ui線程中更新listview
            }
        });
    }