Android:アクティビティでOnCreateの外にHTTPリクエストを配置することができますか?
質問
私はAndroidを初めて使用しており、HTTPリクエストをどこに配置するかを1回だけ実行できるようにしようとしています(アクティビティが最初に表示されたとき)。 OnCreateは、OnactivityResultから戻ってくるときに常に呼び出されます(ここでカメラから写真をつかむ)
助言がありますか?
解決
内側 onCreate(Bundle savedInstanceState)
もしも savedInstanceState
は null
次に、アクティビティの最初の/クリーンスタートです。だからあなたはこのようなことをすることができます:
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// call HTTP request
}
... the rest of onCreate()
}
他のヒント
OnCreate内で最初に電話をかけたときにフラグを設定してから、OnCreate(およびコード)が呼び出されるたびにチェックするのはどうですか。 Completenesアクティビティのライフサイクルはここに記載されています: http://developer.android.com/reference/android/app/activity.html#activitylifecycle
OnCreate()は、アクティビティが開始されたときに常に実行されても大丈夫な場合、またはこれがすでに行われているかどうかを確認する準備ができている場合は、悪い場所ではない場合があります(他の答えも示唆しています)。このフラグは、アプリの完全なシャットダウンと再起動も生き残るため、この目的のためにSharedPreferencesにフラグを設定することができます。
そうは言っても、UIスレッドにネットワークアクセスがある場合はこれらのシステムがアプリを殺すため、アプリをハニカムやアイスクリームサンドイッチで利用できるようにする場合は、背景スレッドにHTTPリクエストをバックグラウンドスレッドに配置する必要があります。