应用程序因动画而崩溃

时间:2013-10-27 16:05:27

标签: android performance android-fragments

我在我的应用程序中使用动画,每当活动开始时我将内容视图设置为该动画类,但每当用户返回时它只会在我使用动画的地方崩溃它。你能告诉我如何保存我的应用程序从这次崩溃中

    import android.app.Activity;

import android.media.MediaPlayer;
import android.os.Bundle;

public class Ultimate_bomb extends Activity {
    FireworkLayout my;
    MediaPlayer sound;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        my = new Animation(this);
        setContentView(my);
        sound = MediaPlayer.create(Ultimate_bomb.this, R.raw.ultimate_bomb);
        sound.start();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();

        sound.release();
        finish();
    }
}

1 个答案:

答案 0 :(得分:0)

我猜您正在播放动画或在您的Animation类中启动asyncTask。按下后退按钮时,您的活动将被销毁,但动画类中的动画或任务会尝试使用附加到上下文的上下文或视图(可能是imageView)。要解决您的问题,您必须在Activity的onPause方法中停止动画或在Animation类中设置标志。

编辑:我查看了您使用的FireworkLayout类(通过您分享的链接)。我看到有一个名为FireworkLayout的类,在这个类中我们有一个GameThread。如果AnimateStateasRunning,则该线程会绘制。当您的活动进入暂停状态时,您必须将其设置为asPause

好了,我开悟了,我想你也是:) 将此medhod添加到FireworkLayout类,并在Activity进入onPause状态时调用onActivityPaused。

public void onActivityPaused() {
    if(thread != null) {
        thread.pause();
    }
}
你可能需要一个简历方法。因此,将此方法添加到FireworkLayout类,并在活动处于onResume状态时调用它。

public void onActivityResumed() {
    if(thread != null) {
        thread.unpause();
    }
}

编辑后的示例调用;

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    my.onActivityPaused();
    ...

}