我正在为Android开发一个应用程序,我希望它在按下主页按钮(onPause)时暂停音乐。这很好,但是当我再次尝试启动游戏时,onResume,onRestart,onStart,onRestoreInstanceState和onCreate从未被调用,它告诉我应用程序没有响应。 LogCat中没有显示异常......所以我不知道发生了什么。有没有人建议为什么会出现这种情况?
CNC中 当应用程序暂停时,我在LogCat中收到此错误:
04-16 20:09:32.659:ERROR / ActivityManager(66):原因:Intent的广播{act = android.intent.action.CLOSE_SYSTEM_DIALOGS cmp = com.android.settings / .widget.SettingsAppWidgetProvider(有额外的) }
我的onPause()代码:
public void onPause() {
super.onPause();
panel.mediaPlayer.pause();
panel.thread.running=false;
}
主要申请主题:
public void run() {
running = true;
while(running) {
//new Canvas.
Canvas c = null;
//Update information
update();
//Draw everything to screen
try {
//Gets the canvas from the surfaceHolder.
c = surfaceHolder.lockCanvas(null);
synchronized(surfaceHolder) {
//draw to the canvas
doDraw(c);
try {
Thread.sleep(gameSpeed);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} finally {
if (c != null) {
surfaceHolder.unlockCanvasAndPost(c);
}
}
}
mediaPlayer:
mediaPlayer = new MediaPlayer();
sublime = context.getResources().openRawResourceFd(R.raw.sublime);
try {
mediaPlayer.setLooping(true);
mediaPlayer.setDataSource(sublime.getFileDescriptor(), sublime.getStartOffset(), sublime.getLength());
mediaPlayer.prepare();
} catch (IllegalArgumentException e1) {
} catch (IllegalStateException e1) {
} catch (IOException e1) {
}
mediaPlayer.start();
答案 0 :(得分:2)
当您收到“应用程序未响应”错误时,这意味着您的活动在主应用程序线程上花费的时间过长。确定您在主应用程序线程上执行的所有工作,并将慢速内容迁移到后台线程或AsyncTask
。
答案 1 :(得分:0)
我想我可能知道我的错误是什么:当在SurfaceView上调用onSizeChanged时运行一些不需要的代码(我想当你暂停Activity时会发生其他东西进入查看)...我检查一下。谢谢大家!