【问题标题】:Android onResume not calledAndroid onResume 未调用
【发布时间】:2011-04-16 20:15:16
【问题描述】:

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

-编辑- 当应用程序暂停时,我确实在 LogCat 中收到此错误:

04-16 20:09:32.659: ERROR/ActivityManager(66): Reason: Broadcast of 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 = 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();

【问题讨论】:

  • 发布您的 onPause() 代码以及与设置它操作的对象相关的任何其他内容。

标签: android android-activity onresume onpause


【解决方案1】:

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

【讨论】:

  • 我并没有在主应用程序线程中做太多工作。当它应该做的只是绘制单个图像时,它会出现此错误。
【解决方案2】:

我想我可能知道我的错误是什么:当在 SurfaceView 上调用 onSizeChanged 时,它正在运行一些不需要的代码(我猜这可能会在您暂停 Activity 并查看其他内容时发生)......我'会检查的。谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多