19

私のアクティビティでは、onDestroy() でいくつかの外部のもの (サービス) を破棄する必要があります。ただし、構成の変更が発生した場合 (キーボードが反転した場合など) は、すぐに復元されるため、これは必要ありません。

問題は、onDestroy() が Back キーを押したことが原因なのか、設定変更プロセスの一部なのかをどのように区別するかということです。

@CommonsWareの回答の後、それは非常に簡単になります)のようなもの:

@Override 
onDestroy() { 
  if (mIsChangeConfig == true) { 
    mIsChangeConfig = false: 
  } else { 
    stopService(); 
  } 
} 

@Override 
onRetainNonConfigurationInstance() { 
  mIsChangeConfig = true; 
}
4

3 に答える 3

24

Android 3.x(APIレベル11)ではisChangingConfigurations()、構成の変更によってアクティビティが破棄されているかどうかを確認するために呼び出すことができます。

onRetainNonConfigurationInstance()その前に、ブールデータメンバー(たとえばisChangingConfigurations)をオーバーライドしてに設定しtrue、そのデータメンバーをでチェックしますonDestroy()

于 2011-07-16T12:04:17.600 に答える
6

これはあなたのためにトリックを行うかもしれません(方向の変更とアプリケーションの終了を区別する方法 android から):

アクティビティの isFinishing() メソッドを使用します。

サンプルコード:

@Override
protected void onDestroy() {
  super.onDestroy();

  if (isFinishing()) {
    // Do stuff
  } else { 
    // It's an orientation change.
  }
}
于 2014-03-27T16:16:01.723 に答える