由于Timer,app崩溃了Create

时间:2013-10-01 17:44:26

标签: android multithreading timer oncreate

我尝试使用此代码时,我的应用崩溃了吗? 我希望我不断检查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();

2 个答案:

答案 0 :(得分:1)

  

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

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

These answers talk about handler and asynctask

Example of runOnUiThread

答案 1 :(得分:0)

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

希望这有帮助。

问候!