2

これは、私のアプリの最初のアクティビティのonCreateメソッドです。すべてのウィジェットを初期化し、インターネットからモデルデータをロードするスレッドを開始します。場合によっては、ネットワークが非常に遅いか応答していないときに、"initializeModelThread"CPU全体を使用しているように見え、onCreateメソッドを終了できません。

あるケースではLog.v("Time...)、300ミリ秒後に呼び出されたことがわかりましたが、HttpExceptionが停止するまで、画面は約20秒間黒のままでしたinitalizeModelThread。スレッドの優先度を低く設定したことがすでにわかります。

この場合、AsyncTaskの使用は役に立ちますか?その問題について他に何か考えはありますか?

public void onCreate( Bundle savedInstanceState ) {
        super.onCreate(savedInstanceState);

        Long time = System.currentTimeMillis();

        initializeWidgets();

        Thread threadInstance = new Thread(initializeModelThread);
        threadInstance.setPriority(Thread.MIN_PRIORITY);
        threadInstance.start();

        Log.v("Time", "Difference from start " + Long.toString(System.currentTimeMillis() - time));

      }
4

2 に答える 2

0

AsyncTaskここでは違いはありません。

メソッドでスレッドを作成する代わりに、onCreate()メソッドで作成しますonStart()

于 2010-10-13T14:38:00.317 に答える
0

問題は、Webからデータをダウンロードする「initializeWidgets」でグーグルジオリバースコーディング機能(GeoCoder)を使用したことでした。ケースの90%で本当に速かった。そのダウンロードをAsyncTaskに移動した後、開始中にそのような遅延が再び発生することはありませんでした

于 2010-11-05T21:57:27.797 に答える