2011-12-29 69 views
3

我有從我的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

+2

顯示您'的onCreate(...)'和'的onResume()''都和BasActivity''HomeActivity'的代碼。 – Squonk 2011-12-29 02:04:09

+0

有很多的代碼,我想評論大部分沒有變化.. – katit 2011-12-29 02:14:06

+0

我從來沒有使用'updateConfiguration(...)'但建議對我來說,這是怎麼回事觸發'onConfigurationChanged(...)' 。沒有?如果是這樣,那就是你的無限循環來自哪裏。如果你離開調用'updateConfiguration(...),會發生什麼'註釋掉,取消對其他線路和移動'super.onConfigurationChanged(NEWCONFIG);'你重寫'onConfigurationChanged(...)'方法結束。換句話說,在修改'newConfig'來設置它的語言環境後,最後調用它。 – Squonk 2011-12-29 03:35:07

回答

2

嘗試編輯AndroidManifest.xml中,然後加入Android:configChanges =「區域設置」的所有活動。它可以解決重新創建問題。

+0

不幸的是這沒有不適合我,但我在這裏找到了解決方案:http://stackoverflow.com/questions/15406345/activity-is-blinking-after-locale-change-in-android-4-1 – Martin 2013-11-09 13:13:35

0

機器人:configChanges = 「區域設置」 救了我一些真正的痛苦。我得到了一個無休止的暫停/恢復循環,但只在preics設備上,並且只有在我下載了軟糖豆的sdks之後。