2011-04-16 93 views
0

我正在开发一款适用于Android的应用程序,我希望它在您按主页按钮(onPause)时暂停音乐。这很好,但是当我尝试再次启动游戏时,onResume,onRestart,onStart,onRestoreInstanceState和onCreate永远不会被调用,它告诉我应用程序没有响应。 LogCat中没有显示异常...所以我不知道发生了什么。有没有人有任何建议,为什么这可能是这种情况?Android onResume不叫

CNC中 我做在logcat中得到这个错误,当应用程序暂停:

04-16 20:09:32.659:ERROR/ActivityManager(66):原因:广播意向{ACT =机器人.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

发布您的onPause()代码以及与设置它所操作的对象有关的任何其他内容。 – Squonk 2011-04-16 20:24:58

回答

1

当你得到一个“应用程序没有响应”的错误,这意味着你的活动时间过长主应用程序线程上。确定您在主应用程序线程上所做的所有工作,并将慢速内容迁移到后台线程或AsyncTask

+0

我并没有在主应用程序线程中做太多的工作。当它应该在做的是绘制单个图像时,它会得到这个错误。 – Will 2011-04-18 04:24:14

0

我想我可能知道我的错误是什么:当在SurfaceView上调用onSizeChanged时,它正在运行一些不需要的代码(当我暂停活动并且其他东西进入视图时,我想可能会发生这种情况)... I会检查出来。感谢大家!