onStart()
メソッド、、、、onResume()
をオーバーライドしましonStop()
た。コマンドを使用して、これらのメソッドがいつ呼び出されるかを監視しています。onPause()
MainActivity
log.d()
マニフェストで使用するandroid:configChanges="orientation|screenSize"
と、オーバーライドされたメソッドが呼び出されません。なぜそれが起こっているのですか?
onStart()
メソッド、、、、onResume()
をオーバーライドしましonStop()
た。コマンドを使用して、これらのメソッドがいつ呼び出されるかを監視しています。onPause()
MainActivity
log.d()
マニフェストで使用するandroid:configChanges="orientation|screenSize"
と、オーバーライドされたメソッドが呼び出されません。なぜそれが起こっているのですか?
ランタイムの変更を処理するには 2 つの方法があります。
1. Retain an object during a configuration change
2. Handle the configuration change yourself
1. 構成変更中にオブジェクトを保持する
構成の変更中にオブジェクトを保持すると、Android は実行中のアクティビティを再起動してonDestroy()
呼び出され、続いてonCreate()
そこから他のすべてのアクティビティが呼び出されます: onStart()
、onResume()
、onStop()
、onPause()
など
しかし、自分で構成を処理したい場合は、2 番目の方法があります。
2. 構成の変更を自分で処理する
ここで、特定の構成変更中にアプリケーションがリソースを更新する必要がなく、アクティビティの再起動を回避する必要があるパフォーマンス制限がある場合は、アクティビティが構成変更自体を処理することを宣言できます。これにより、システムの再起動が防止されます。あなたの活動。
これは、マニフェストandroid:configChanges属性に、処理する構成を表す値を含めると発生します。
例えば:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
現在、これらの構成のいずれかが変更された場合、MyActivity は再起動しません。代わりに、 MyActivity は onConfigurationChanged()への呼び出しを受け取ります。このメソッドには、新しいデバイス構成を指定する構成オブジェクトが渡されます
たとえば、次のonConfigurationChanged()実装は、現在のデバイスの向きをチェックします。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
詳細については、Android Developersで読み続けることができます