我正在實現一個在線視頻播放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並立即按返回。
其他案件正常工作。
是的。這就是我所做的。但是你能否解釋爲什麼MainActivity被重新創建。它的方向已經設置好了。 –
即使在鎖定到肖像時,如果您不添加configChanges以表示您將手動處理它們,也可以觸發這些活動生命週期更改。 – HannahMitt