我有從我的BaseActivity繼承的所有活動。它一年的工作很好。現在我升級後,我的歌Nexus S 4.0.3我的應用程序停止工作 - 我得到無限循環看起來像這樣:活動生命週期問題 - 升級到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
所以,當HomeActivity
開始它調用base.onCreate這是第二條線。 然後調用onResume
,之後由於某種原因 - 再次調用BaseActivity.onCreate。
這是否有意義?我注意到的一件事是,一切運行良好,直到我轉動屏幕。然後它開始閃爍。即使我打回家並再次打開應用程序。但是,如果我殺進程並重新啓動它看起來不錯,直到我再次嘗試翻轉屏..
編輯:我刪除了所有的代碼示例 - 他們不相關的。 似乎我發現我的問題。我做了我的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重新啓動並且它正在重複執行。現在我需要想出更好的方法。
因此,有重大更改在此區域設置區域在4.0
顯示您'的onCreate(...)'和'的onResume()''都和BasActivity''HomeActivity'的代碼。 – Squonk 2011-12-29 02:04:09
有很多的代碼,我想評論大部分沒有變化.. – katit 2011-12-29 02:14:06
我從來沒有使用'updateConfiguration(...)'但建議對我來說,這是怎麼回事觸發'onConfigurationChanged(...)' 。沒有?如果是這樣,那就是你的無限循環來自哪裏。如果你離開調用'updateConfiguration(...),會發生什麼'註釋掉,取消對其他線路和移動'super.onConfigurationChanged(NEWCONFIG);'你重寫'onConfigurationChanged(...)'方法結束。換句話說,在修改'newConfig'來設置它的語言環境後,最後調用它。 – Squonk 2011-12-29 03:35:07