2014-03-25 31 views
0

好的,这是我的问题,我对所有类型的线程感到困惑asyntask处理程序wait()runnables工作人员,我不知道android有多少其他的东西“立即”或“实时”执行任务。Android - 等待一段时间后做些什么(很简单)

我想要做的就是在3秒后停止声音(我正在使用soundmanager)。如果我使用wait(它会阻止我的UI,并在屏幕上弹出'not responding'消息)。同样的事情,如果我在一个单独的线程中使用相同的'等待'(我不知道为什么,它不应该,对吗?我的意思是,这是一个单独的线程的整个点) 反正,我是相对较新的在Android中如此。希望你们能为我解决这个问题!

在此先感谢

回答

0

正如你指出,Android有一些专门类来处理日以优化的方式发布。

比使用纯粹的Thread更合适的方法是使用Android的Handler类来完成此操作。

new Handler().postDelayed(new Runnable() 
{ 

    @Override 
    public void run() 
    { 
     mediaPlayer.stop(); 
     mediaPlayer.release(); 
    } 
}, YOUR_DELAY); 

对于您想这样做的背景下,你可以使用一个AsyncTask长时间运行操作。

要实现在此期间定期进行“勾号”回调的倒计时情况,可以使用CountDownTimer

所有这些的优点是他们执行UI线程上的重要代码。这在Android开发中的许多情况下非常重要。

0

好吧,林回答我的问题的情况下,任何人有这个问题

new Thread() 
{ 
    public void run() 
    { 

     try 
     { 
      sleep(sharedPref.getInt("alarm_duration", 2000) 
        * DateUtils.SECOND_IN_MILLIS); 
     } 
     catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
     mediaPlayer.stop(); 
     mediaPlayer.release(); 
    } 
}.start(); 

你需要调用。开始()不.RUN() - 这样,你的UI不会冻结

愚蠢的错误:)

相关问题