Android应用程序就像在旋转时启动一样

时间:2015-06-15 17:36:08

标签: android

我的Android应用程序出现问题,只要屏幕旋转,它就会在每次启动时返回状态。该应用程序有几个ImageButton s,每次点击都会改变它们的图像,我在循环中播放背景音乐。无论何时旋转屏幕,ImageButton都会返回默认图像,即使用户触摸它们已经更改了它们,并且音乐循环的另一个实例开始播放。我怎么能阻止这种情况发生?我不知道如何处理ImageButton。至于音乐循环,我尝试使用onStart(),但无论如何它仍然会发生,即使我使用boolean来检查它是否已经完成了一次任务。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_activity);
}

@Override
protected void onStart() {
    if(firstRun)
    {
        super.onStart();
        mediaPlayer = MediaPlayer.create(this, R.raw.music);
        mediaPlayer.setLooping(true);
        mediaPlayer.start();
        firstRun = false;
    }
}

2 个答案:

答案 0 :(得分:1)

这是android活动的经典行为。实际上你的应用程序没有重启,但活动正在重启。您可以使用以下提到的解决方案:

How to avoid restarting activity when orientation changes on Android

我还建议您扎实掌握Activity LifeCyle,以确保您因Android活动/碎片的古怪行为而减少麻烦。

此外,由于您希望在后台播放音乐,请尝试在任务栏中使用具有持久通知的服务,以确保您的应用不会被Android突然关闭。

答案 1 :(得分:0)

将此行添加到Manifest.xml文件

中的活动声明中
android:configChanges="keyboardHidden|screenSize|orientation"
像这样:

<activity android:name=".YourActivity"
            android:configChanges="keyboardHidden|screenSize|orientation" />