0

複数のテキストビュー (>30) を短時間で同時に変更したい。しかし、これらのステップが短すぎる (<100ms) と、変更は非常に遅くなります。〜10msをアーカイブしたい。nexus 4でデバッグしています。その動作は正常ですか?ここに私のコードがあります:

public class AsyncChangeUI extends AsyncTask<Void, Integer, Void> {
    View view;
    int oldPercentage;
    int newPercentage;

    AsyncChangeUI(View view, int oldPercentage, int newPercentage){
        super();
        this.view = view;
        this.oldPercentage = oldPercentage;
        this.newPercentage = newPercentage;
    }

    @Override
    protected Void doInBackground(Void... params) {
        Log.e("Kachel", view.getClass().getName());

        for(Integer i=this.oldPercentage; i<=newPercentage; i++){
            this.oldPercentage = i;

            try {
                Thread.sleep(10); //laggy if <100
                publishProgress(i);
            }catch(InterruptedException e) {
                e.printStackTrace();
            }
        }

        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {
        List<TileGroupLayout> tileGroupList = ((MainLinearLayout) view).tileGroupList;

        for (TileGroupLayout tileGroup: tileGroupList) {
            List<TileLayout> tileList = tileGroup.tileList;

            for (TileLayout tile: tileList) {
                tile.changePercentageTo(progress[0]);
            }  
        }       
    }
}

どうも!変更の最後のステップが最初のステップよりも遅いことに気付きました:S

4

1 に答える 1

0

デバッガーを接続せずにこれを試しましたか? デバッガーは実際にアプリケーションを遅くします。

于 2013-04-21T16:17:07.510 に答える