0

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

    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();
    }
}
4

1 回答 1

0

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

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

好的,现在我很开明,我猜你也是:) 将此方法添加到 FireworkLayout 类并在您的 Activity 进入 onPause 状态时调用 onActivityPaused。

public void onActivityPaused() {
    if(thread != null) {
        thread.pause();
    }
}

顺便说一句,您可能需要一个 resume 方法。因此,将此方法添加到 FireworkLayout 类并在您的活动处于 onResume 状态时调用它。

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

编辑后的示例调用;

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

}

于 2013-10-27T17:14:02.870 回答