2

同じアクティビティ内で複数のスレッドを再開する必要があります。アプリには、AThread、BThread、CThreadと呼ばれる3つの異なるスレッドがあります。

アプリを閉じて再度開いた場合は、すべてのプレビュースレッドを再度開く必要があります。どうすればそれができますか?スレッドのリストを返すことを考えました。それは良い選択肢ですか?何かのようなもの:

@Override
public Object onRetainNonConfigurationInstance() {
    return new ArrayList<Thread>(AThread, BThread, CThread);
}

そして、関数onCreateで、すべてのスレッドを検証する「foreach」を呼び出します。何かのようなもの

    @Override
    public void onCreate(Bundle savedInstanceState) {
(...)
        super.onCreate(savedInstanceState);
        ArrayList<Thread> allThreads = (ArrayList<Thread>) getLastNonConfigurationInstance();
        AThread = allThreads.get(0);
        BThread = allThreads.get(1);
        CThread = allThreads.get(2);
        if (AThread != null && AThread.isAlive()) {
            // TODO SOMETHING
        }
        if (BThread != null && BThread.isAlive()) {
            // TODO SOMETHING
        }
        if (CThread != null && CThread.isAlive()) {
            // TODO SOMETHING
        }
    }

あれは正しいですか?より良いアイデアはありますか?乾杯=)

4

1 に答える 1

3

を使用してFragmentをホストしThread(より好ましくは を) 、のメソッドAsyncTaskを呼び出します。は構成の変更後も保持され、(およびその) は とともに破棄されません。これは を使用するよりも好ましいと思います。setRetainInstance(true)FragmentonCreateFragmentFragmentThreadActivityonRetainNonConfigurationInstance

于 2012-09-15T02:07:15.163 に答える