2013-07-13 74 views
0

當旋轉我的屏幕我失去了我的連接在應用程序內結算應用程序內結算。這就是我下面onDestroy方法:在對配置變化

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     if (isFinishing()) { 
      Log.d(tag, "Destroying helper."); 
      if (mHelper != null) { 
       mHelper.dispose(); 
       mHelper = null; 
      } 
     } 
     Toast.makeText(this, "onDestroy " + mHelper, Toast.LENGTH_SHORT).show(); 
    } 

這都說明mHelper仍然沒有空當屏幕方向正在改變,因爲活動沒有完成,那麼在此之後,我onCreate方法,mHelper爲null。

我怎樣才能防止屏幕旋轉這樣做呢?

回答

1

默認情況下,方向的變化會造成系統破壞並重新創建活動,要改變這種行爲改變活動的在AndroidManifest.xml條目:

<activity android:name=".MyActivity" 
      android:configChanges="orientation" 
      android:label="@string/app_name"> 

這告訴Android你想把手的結構變化你自己,所以當方向改變發生時Activity不會被重新啓動,但你當前的Activity實例的onConfigurationChanged()方法將被調用。

單的一個例子:

public class SingletonObjectDemo { 

    private static SingletonObject singletonObject; 
    // Note that the constructor is private 
    private SingletonObjectDemo() { 
     // Optional Code 
    } 
    public static SingletonObjectDemo getSingletonObject() { 
     if (singletonObject == null) { 
      singletonObject = new SingletonObjectDemo(); 
     } 
     return singletonObject; 
    } 
} 

您可以檢查出的方向變化是如何處理here

+0

感謝您的詳細信息!我期望的問題是,它會阻止我的活動被重新創建,從而無法更改爲景觀活動佈局。 – AndroidPenguin

+0

在這種情況下,我想你可以傳遞一個全局上下文給mHelper(一個應用程序實例),並將mHelper的引用保存爲一個靜態變量或保存在一個單例中 – Kai

+0

再次感謝Kai。你是什​​麼意思把它作爲一個單身人士?把它作爲一個靜態變量只不過是輸入靜態的權利?我的sqlite數據庫連接是一個靜態的,這也不會保留。我嘗試在應用程序上下文中傳遞,但這也不起作用。 – AndroidPenguin