-1

当我尝试此代码时,我的应用程序崩溃了?我希望我不断检查 MediaPlayer (MP) 是否正在播放,如果是,我希望文本阅读“正在播放”-但如果它没有播放,我希望它阅读“未播放”。

我没有收到来自 Eclipse 的任何警告,但是当我导出它时,它仍然在加载时崩溃。我知道设置 TextView 的代码不存在,但这不是问题。(我认为)如果有其他方法可以做到这一点,我会很高兴朝着正确的方向前进。

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
                      //The Timer
                                Thread playingtimer = new Thread (){
                                    public void run() {
                                        try{
                                            int time = 1;
                                            while(time > 0) {
                                            sleep(100);

                                            if (MP.isPlaying()){ 
                                //set the TextView here "Now Playing"
                                            }
                                            else 
                                //set the TextView to "NOT Playing"
                                            }
                                        } 
                                        catch (InterruptedException e) {
                                        e.printStackTrace();
                                        }
                                        finally{

                                        }
                                    }
                                };
                                playingtimer.start();
4

2 回答 2

1

我知道设置 TextView 的代码不存在,但这不是问题。( 我想 )

这正是问题所在。您正在尝试View从后台更新 a Thread。您应该使用runOnUiThread()HandlerAsyncTask来更新UI.

这些答案谈论处理程序和异步任务

runOnUiThread 示例

于 2013-10-01T17:46:57.463 回答
0

这里的问题是,如果您尝试从该计时器修改 TextView,它将崩溃,因为 android 中最重要的规则之一是您不能从除主线程之外的任何线程修改任何视图,并且您正在尝试从您的自定义工作线程更改它,以使其工作,将修改视图的代码包装到 runOnUIThread 方法中,或者提出您自己的处理程序机制以在主线程中运行该代码。

希望这可以帮助。

问候!

于 2013-10-01T17:47:41.673 回答