36

Android 3.0 での使用方法を理解しようとしてLoadersいますが、動作しないようです。ドキュメントは使用についてのみ説明していますCursorLoaderが、私は使用していAsyncTaskLoaderます。

ドキュメントからは、実装するだけでよいようですが、コールバックでローダーを作成したAsyncTaskLoader.loadInBackground()後に呼び出されることはありません。getLoaderManager().initLoader()

Created new loader LoaderInfo{4040a828 #0 : ArticleDataLoader{4036b350}}正常に作成されたように見えるデバッグ メッセージが表示されます。

現在、SDK でローダーが壊れている可能性はありますか? または、ローダーを作成した後に呼び出す必要があるメソッドはありますか? (このCursorLoader例ではそれを行っていません)。

forceLoad()編集:から返されたローダーを呼び出すと、initLoader()少なくとも読み込みが開始されるようですが、これは回転を正しく処理できないことを意味します:(

4

3 に答える 3

13

Dianne Hackborn はバグトラッカーで返信し、静的ライブラリの実装を紹介してくれました。CursorLoader は forceLoad() を実行しているため、機能しています。

バグトラッカーで最も単純なケースでこれを処理するクラスについては、私の添付クラスを参照してください: http://code.google.com/p/android/issues/detail?id=14944

于 2011-03-27T10:16:38.680 に答える
1

onStartLoading() メソッドをオーバーライドする必要があります。開発者ウェブサイトの例を見てください。

    /**
     * Handles a request to start the Loader.
     */
    @Override protected void onStartLoading() {
        if (mApps != null) {
            // If we currently have a result available, deliver it
            // immediately.
            deliverResult(mApps);
        }

        // Start watching for changes in the app data.
        if (mPackageObserver == null) {
            mPackageObserver = new PackageIntentReceiver(this);
        }

        // Has something interesting in the configuration changed since we
        // last built the app list?
        boolean configChange = mLastConfig.applyNewConfig(getContext().getResources());

        if (takeContentChanged() || mApps == null || configChange) {
            // If the data has changed since the last time it was loaded
            // or is not currently available, start a load.
            forceLoad();
        }
    }
于 2012-06-23T02:48:51.557 に答える
0

アレックス; onLoadInBackground () が呼び出されるかどうかを検証しようとしましたか?

onLoadInBackground (): 実際のロードを実行するためにワーカー スレッドで呼び出されます。実装は結果を直接配信するべきではありませんが、このメソッドから結果を返す必要があります。これにより、最終的に UI スレッドで deliverResult(D) が呼び出されます。実装が UI スレッドで結果を処理する必要がある場合は、deliverResult(D) をオーバーライドしてそこで処理することができます。

于 2011-03-03T18:37:50.423 に答える