2013-12-11 52 views
0

我正在實現一個在線視頻播放Android應用程序並獲取錯誤。爲了簡單起見,我在這裏做了一個示例應用程序。有2個活動:MainActivity和SecondActivity。從SecondActivity按Back按鈕時,第一個活動被破壞

MainActivity 

public class MainActivity extends Activity { 
    public static String TAG = "MainActivity"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.e(TAG, "onCreate"); 
     setContentView(R.layout.activity_main); 

     ((Button)findViewById(R.id.btn)).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(getApplicationContext(), SecondActivity.class); 
       startActivity(intent); 
      } 
     }); 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     Log.e(TAG, "onStart"); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     Log.e(TAG, "onResume"); 
    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
     Log.e(TAG, "onStop"); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Log.e(TAG, "onDestroy"); 
    } 
} 

SecondActivity 

public class SecondActivity extends Activity { 
    public static String TAG = "SecondActivity"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     Log.e(TAG, "onStart"); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     Log.e(TAG, "onResume"); 
    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
     Log.e(TAG, "onStop"); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Log.e(TAG, "onDestroy"); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     // TODO Auto-generated method stub 
     super.onConfigurationChanged(newConfig); 
     Log.e(TAG, "onConfigurationChanged"); 
    } 
} 

AndroidManifiest.xml  

    <activity 
     android:name="com.example.androidtest.MainActivity" 
     android:screenOrientation="portrait" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.example.androidtest.SecondActivity" 
     android:label="@string/title_activity_second" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:screenOrientation="portrait"> 
    </activity> 

MainActivity有一個按鈕來啓動SecondActivity。我的場景是將設備置於橫向模式,然後單擊按鈕開始SecondActivity(以便SecondActivity自動旋轉到橫向模式)。然後立即按Back按鈕返回MainActivity。但MainActivity被銷燬。這是我的日誌:

12-11 22:22:20.940: E/MainActivity(400): onCreate 
12-11 22:22:20.960: E/MainActivity(400): onStart 
12-11 22:22:20.960: E/MainActivity(400): onResume 
12-11 22:22:24.524: E/SecondActivity(400): onStart 
12-11 22:22:24.524: E/SecondActivity(400): onResume 
12-11 22:22:24.544: E/SecondActivity(400): onConfigurationChanged 
12-11 22:22:24.634: E/MainActivity(400): onStop 
12-11 22:22:24.634: E/MainActivity(400): onDestroy 
12-11 22:22:34.133: E/SecondActivity(400): onStop 
12-11 22:22:34.133: E/SecondActivity(400): onDestroy 

MainActivity被破壞,當前的活動是SecondActivity。如果我再按一下,則SeconActivity將被銷燬。 任何人都可以解釋爲什麼MainActivity被銷燬或這是Android操作系統的錯誤。 在此先感謝。
P/S:對於這種情況,將設備置​​於橫向,然後單擊按鈕啓動SecondActivity並立即按返回。
其他案件正常工作。

回答

0

您的MainActivity正在循環重新創建。爲了防止設備旋轉時重新創建,您需要與SecondActivity相同的configChanges:android:configChanges =「orientation | keyboardHidden | screenSize」

+0

是的。這就是我所做的。但是你能否解釋爲什麼MainActivity被重新創建。它的方向已經設置好了。 –

+0

即使在鎖定到肖像時,如果您不添加configChanges以表示您將手動處理它們,也可以觸發這些活動生命週期更改。 – HannahMitt

相關問題