我在我的应用程序中使用动画,每当活动开始时我将内容视图设置为该动画类,但每当用户返回时它只会在我使用动画的地方崩溃它。你能告诉我如何保存我的应用程序从这次崩溃中
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();
}
}
答案 0 :(得分:0)
我猜您正在播放动画或在您的Animation类中启动asyncTask。按下后退按钮时,您的活动将被销毁,但动画类中的动画或任务会尝试使用附加到上下文的上下文或视图(可能是imageView)。要解决您的问题,您必须在Activity的onPause方法中停止动画或在Animation类中设置标志。
编辑:我查看了您使用的FireworkLayout类(通过您分享的链接)。我看到有一个名为FireworkLayout
的类,在这个类中我们有一个GameThread
。如果AnimateState
为asRunning
,则该线程会绘制。当您的活动进入暂停状态时,您必须将其设置为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();
...
}