2

この質問は、ここここのように何度か議論されていることを知っています。

しかし、提供されているほとんどのソリューションは提案されていないか、非推奨であるため、私の問題はまだ解決されていません。

テキストを継続的にAsyncTask更新する があります。TextViewタスクの実行は、トグル ボタンのクリックで開始されます。最初はAsyncTask、メイン アクティビティの内部クラスとして を持っていました。しかし、後でそれを外部クラスに変更しました。

向きの変更中にテキストビューの値を保存および復元するためにメソッドを使用しonSaveInstanceState()ています。onRestoreInstanceState()私が達成できないのは、オリエンテーションの後で、ボタンの状態を復元して再開するにはどうすればよいAsyncTaskですか?

4

3 に答える 3

2

このページによると: http://developer.android.com/guide/topics/manifest/activity-element.html#config、アプリケーションがAPIレベル13以上をターゲットにしている場合は、画面の回転をメソッドandroid:configChanges="orientation|screenSize"にキャッチするために使用する必要がありますonConfigurationChanged().

これを行うと、 メソッドonPauseonResumeメソッドが呼び出されないため、TextView はその値を保持します。私の考えでは、実行中の AsyncTask は停止しません。存在する場合は、onConfigurationChangedメソッドでそれを思い出すようにしてください。

于 2013-05-02T07:24:43.907 に答える
2
  1. クラスを使用するApplicationと、常に利用可能になり、タスクを静的変数に格納できます。

  2. でアクティビティにダミー フラグメントを追加しsetRetainInstance(true)、それを使用して AsyncTasks を保存および実行します。ローテーションで自動的にアタッチされ、アクティビティはタグで再び見つけることができます。

  3. サービスを使用してバックグラウンドのものを実行します。バックグラウンド サービスはローテーションの再起動の影響を受けず、アクティビティは再度バインドできます。

于 2013-05-02T07:24:51.877 に答える
0

onSaveInstanceState(...)ボタンの状態を のバンドルに保存し、 で復元しonCreate(...)て、ボタンの状態に応じて AsyncTask を再開できないのはなぜですか? 私の経験では、通常、向きの変更後に .. ではなく onCreate(..) が呼び出されることに注意してくださいonRestoreInstanceState()

于 2013-05-02T07:17:56.827 に答える