Android onResume没有调用

时间:2011-04-16 20:15:16

标签: android android-activity onresume onpause

我正在为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();

2 个答案:

答案 0 :(得分:2)

当您收到“应用程序未响应”错误时,这意味着您的活动在主应用程序线程上花费的时间过长。确定您在主应用程序线程上执行的所有工作,并将慢速内容迁移到后台线程或AsyncTask

答案 1 :(得分:0)

我想我可能知道我的错误是什么:当在SurfaceView上调用onSizeChanged时运行一些不需要的代码(我想当你暂停Activity时会发生其他东西进入查看)...我检查一下。谢谢大家!