Android TextView setText頻繁に更新表示更新しない問題

1195 ワード

開発中に、C側がサーバ側からコールバックされたデータ表示を受信する問題に遭遇し、記録します.
コールバックの方法は次のとおりです.
    private ICallback mCallBack = new ICallback.Stub() {
    @Override
    public void onProgressUpdate(final int progress) throws RemoteException {
        Log.d("DiskClean","onDiskCacheProgressUpdate: "+ progress+" :"+tv.getText());
        tv.append("
"+ progress); }); } };

tvはすべての更新を表示できないことが分かったが,最初はコールバックが頻繁すぎてuiのリフレッシュに間に合わないと思っていたが,コールバック回数を減らした後はだめだった.最後に、テストは以下の方法で実現できます.
    private ICallback mCallBack = new ICallback.Stub() {
    @Override
    public void onProgressUpdate(final int progress) throws RemoteException {
        Log.d("DiskClean","onDiskCacheProgressUpdate: "+ progress+" :"+tv.getText());
        MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    String out = "    :"+ progress+"%";
                    tv2.setText(out);
                }
            });
    }
};

主にコールバックスレッドでMainActivityを呼び出す.this.runOnUiThread(Runnable)の方法は、UIスレッドで更新され、TextViewが表示されるようにする.