0

オンライン ビデオを再生する Android アプリを実装していますが、エラーが発生します。簡単にするために、ここでサンプルアプリを作成しました。MainActivity と SecondActivity の 2 つのアクティビティがあります。

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横向きモードに自動回転します)。次に、戻るボタンをすぐに押して戻ります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です。もう一度 Back を押すと、SeconActivityが破棄されます。MainActivityが破壊された理由、またはこれが Android OS のエラーである理由を誰でも説明できます。前もって感謝します。
P/S : この場合、デバイスを横向きにして、ボタンをクリックして SecondActivity を開始し、すぐに [戻る] を押します。
その他のケースは問題なく動作します。

4

1 に答える 1

0

MainActivity はローテーションで再作成されています。デバイスが回転したときに再作成されないようにするには、SecondActivity と同じ configChanges が必要です: android:configChanges="orientation|keyboardHidden|screenSize"

于 2013-12-11T15:46:36.717 に答える