2011-12-29 10 views
3

私はすべてのアクティビティをBaseActivityから継承しました。それは1年間素晴らしい仕事をしてきました。 HomeActivityは、第2ラインであるbase.onCreateを呼び出す始めたとき、そうアクティビティライフサイクルの問題 - 4.0.3にアップグレード

12-28 20:09:22.285: DEBUG/IDATT.HomeActivity(24662): onCreate 
12-28 20:09:22.285: DEBUG/IDATT.BaseActivity(24662): onCreate 
12-28 20:09:22.442: DEBUG/IDATT.HomeActivity(24662): onResume 
12-28 20:09:22.442: DEBUG/IDATT.BaseActivity(24662): onResume 
12-28 20:09:22.578: DEBUG/IDATT.HomeActivity(24662): onCreate 
12-28 20:09:22.578: DEBUG/IDATT.BaseActivity(24662): onCreate 
12-28 20:09:22.653: DEBUG/IDATT.HomeActivity(24662): onResume 
12-28 20:09:22.653: DEBUG/IDATT.BaseActivity(24662): onResume 
12-28 20:09:22.785: DEBUG/IDATT.HomeActivity(24662): onCreate 
12-28 20:09:22.785: DEBUG/IDATT.BaseActivity(24662): onCreate 
12-28 20:09:22.863: DEBUG/IDATT.HomeActivity(24662): onResume 
12-28 20:09:22.863: DEBUG/IDATT.BaseActivity(24662): onResume 

: - 私は私のアプリは動作を停止4.0.3に私のネクサスSをアップグレードした後、今、私はそうのように見える無限ループを取得します。 その後、onResumeが呼び出され、その後何らかの理由でBaseActivity.onCreateが再び呼び出されました。

これは意味がありますか?私が気づいたことの一つは、画面を回転させるまですべてが正常に動くことです。それから点滅が始まります。たとえ私がホームを叩いて再びアプリケーションを開いたとしても。私はプロセスを強制終了し、私は..

EDIT再び画面を反転しようとするまで、それはよさそうだ再起動した場合でも、私はすべてのコードサンプルを削除 - 彼らは関係ありません。 問題が見つかったようです。私は私のApplication

@Override 
    public void onConfigurationChanged(Configuration newConfig) 
    { 
     Log.d(LOG_TAG, "onConfigurationChanged"); 
     super.onConfigurationChanged(newConfig); 

     //reset locale to our defined locale in settings 
//  String l = Preferences.getLocale(getApplicationContext()); 
//  Locale locale = new Locale(l); 
//  if (!l.equals("")) 
//  { 
//   newConfig.locale = locale; 
//   Locale.setDefault(locale); 
//   getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics()); 
//  } 
    } 

コメントコードの原因となった問題でonConfigurationChangeを上書きしました。私が(ロケールを変更するために)何をやったかのように思えますが、UI全体が再起動して繰り返していました。今私はより良い方法を考え出す必要があります。

ので、AndroidManifest.xmlを編集し、アンドロイドを追加する4.0

+2

は 'BasActivity'と' HomeActivity'両方のあなたの 'のonCreate(...)'と 'onResume()'コードを表示します。 – Squonk

+0

コードの多くは – katit

+0

は、私は 'updateConfiguration(...)を使用したことがありません'それは '(...)onConfigurationChanged'トリガするために起こっている私に示唆して..私は変更せずにそれを最大限にコメントしようとした、あり。いいえ?そうであれば、それはあなたの無限ループがどこから来ているのかです。 'updateConfiguration(...) 'の呼び出しをコメントアウトしたままにして、他の行のコメントを外し、オーバーライドした' onConfigurationChanged(...) 'メソッドの最後に' super.onConfigurationChanged(newConfig); 'を移動するとどうなりますか?つまり、 'newConfig'を変更してロケールを設定した後、最後に呼び出します。 – Squonk

答えて

2

てみてください、このロケールエリアで破り変更がある:すべての活動のために=「ロケール」configChangesが。再作成の問題を修正できます。

+0

残念ながら、これはやりました私のために働いていないが、私はここで解決策を見つけた:http://stackoverflow.com/questions/15406345/activity-is-blinking-after-locale-change-in-android-4-1 – Martin

0

アンドロイド:configChanges = "ロケール"は私に本当の苦痛を救った。私は無限の一時停止/再開ループを得ていましたが、pre icsデバイスでのみ、そしてjellybeanのためにsdkをダウンロードした後でしかありませんでした。

関連する問題