我尝试使用此代码时,我的应用崩溃了吗? 我希望我不断检查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();
答案 0 :(得分:1)
我知道设置TextView的代码不存在,但这不是问题。 (我认为)
这正是问题所在。您正尝试从后台View
更新Thread
。您应该使用runOnUiThread()
,Handler
或AsyncTask
来更新UI
。
答案 1 :(得分:0)
这里的问题是,如果你试图从那个计时器修改你的TextView它会崩溃,因为android中最重要的规则之一就是你不能修改除main之外的任何线程的任何视图,而你正在尝试从自定义工作线程更改它,以使其工作,将正在修改视图的代码包装到runOnUIThread方法中,或者提出自己的Handler机制在主线程中运行该代码。
希望这有帮助。
问候!