2011-08-17 5 views
1

ファイルから何らかのコンテンツを読み込むためにスレッドを使用するアクティビティがあります。
スレッドが実行されている間にユーザーが画面を回転させると、アプリケーションがクラッシュするという問題があります。
は、私が使用して回転するから画面を防止することができることを知っている:スレッドは、回転中にアクティビティがクラッシュするようにします。

android:screenOrientation="portrait" 

しかし、私がやりたいことは安全に再起動するか、再起動からのアクティビティを防ぐことができますので、アプリケーションを実行してからスレッドを停止することです。

答えて

1

asynctaskを使用して、Activity.onPause()メソッドで停止することができます。

重要なサイド・ノードでは、プロパティーandroid:screenOrientation="portrait"を設定しても、アンドロイドが方向変更時に画面を破壊して再作成するのをアンドロイドが止めることはありません。ランドスケープ・モードは表示されません。

+0

私はちょうど'アンドロイドを使用してみました。 – eladrich

+0

私は正直言って、私はオリエンテーションを余儀なくされたことはありませんが、本の中で* The Busy Coders Guide to Android Development *、セクション*回転の扱い - >問題を強制する*は、 "Androidは*まだ*破壊し、 (たとえあなたが特定の値に設定されていても) "(私は[CommonsWare](http://stackoverflow.com/users/115145/commonsware)が彼の本からそのフレーズをコピーしても構わないと思います)。 – Augusto

-1

ユーザーがデバイスを回転すると、そのプロセスでアプリケーションが再起動され、onDestroyメソッドが呼び出されます。したがって、Activity.onDestroyメソッドを使用してスレッドを破棄または停止することができます。
そこでは、停止、破壊、中断などの方法を見つけることができますが、そのうちの何が今すぐ使用されるべきかは不明です。

+0

もう1つは、自分自身でアクティビティの方向を管理することだと思います。これをチェックしてください: http://developer.android.com/guide/topics/resources/runtime-changes.html – forumercio

0

スレッドは、ボタンなどのUIオブジェクトへの参照を保持していますか?そうであれば、回転によってアクティビティが破棄され、再作成されるため、新しいオブジェクトではなく古いオブジェクトを参照します。そのため、スレッドまたはasynctaskを破棄して再作成する必要があります。あなたがマニフェストで活動宣言にこれを追加する必要が

+0

スレッドを再作成しても構いません問題は、私がそれをやろうとするとアプリケーションが壊れてしまうことです。 – eladrich

1

:screenOrientation =「ポートレート」 `と私はそれは、画面を再作成からアンドロイドを防ぐたと思う:

android:configChanges="keyboardHidden|orientation|screenSize" 
+0

私はあなたを愛しています、感謝=) –

関連する問題