我正在为安卓开发一个应用程序,我想让它在你按下home键(onPause)时暂停音乐。这很好用,但是当我再次尝试启动游戏时,onResume、onRestart、onStart、onRestoreInstanceState和onCreate从未被调用过,并且它告诉我应用程序没有响应。在LogCat中没有显示异常...所以我不知道发生了什么。对于为什么会出现这种情况,有没有人有什么建议?
-EDIT-当应用程序暂停时,我在LogCat中收到以下错误:
04-16 20:09:32.659:错误/活动管理器(66):原因:广播意图{ 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();发布于 2011-04-17 05:20:37
当你得到一个"application not responding“错误时,这意味着你的活动在主应用程序线程上花费了太长的时间。确定您在主应用程序线程上所做的所有工作,并将速度较慢的工作迁移到后台线程或AsyncTask。
发布于 2011-04-18 12:33:46
我想我可能知道我的错误是什么:当在SurfaceView上调用onSizeChanged时,它正在运行一些不需要的代码(我猜当您暂停活动并查看其他内容时,可能会发生这种情况)……我去查查看。谢谢大家!
https://stackoverflow.com/questions/5689316
复制相似问题