android线程/任务基础知识帮忙吗?

时间:2011-11-19 14:23:20

标签: android multithreading

好吧所以我非常新的Android开发和相当新的Java和我不完全理解线程和内部类等。 我有我的主要活动(MyActivity)和我所有的ui内容。 我有一个内部类(MyTask)使用一个运行的线程扩展AsyncTask来改变ui

public final class MyActivity extends Activity{
blah..
class MyTask extends AsyncTask<Integer, Integer, Void>{
@Override
        protected Void doInBackground(Integer... params) {

             t = new Thread(){
                 @Override
                public void run() {
                  while(true) {
//do ui change stuff here

这很好。

我想在MyTask中由事件触发的流模式下使用AudioTrack播放声音。 但这会干扰ui的东西。 什么是处理声音播放代码的最佳方式,所以它不会减慢ui的速度?

谢谢

1 个答案:

答案 0 :(得分:0)

我最初的建议是使用服务,但是在研究它看起来似乎不是正确的方向。 来自:http://developer.android.com/reference/android/app/Service.html

  

请注意,服务与其他应用程序对象一样,在main中运行   他们的托管过程的线程。这意味着,如果您的服务是   要做任何CPU密集型(如MP3播放)或阻塞(如此   作为网络)操作,它应该在其中产生自己的线程   做那个工作。有关这方面的更多信息,请参阅流程和   线程。 IntentService类作为标准提供   具有自己的调度的线程的Service的实现   它的工作要做。   我可能会以“意向服务”的方式使用服务,但这似乎不是一种常用的方式。

根据上面链接中的threads链接,我建议一个工作线程,你可以在这里找到它: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html

只要您不打算从中更新UI元素,如果是这样,工作线程标题下会有其他建议/链接描述其他注意事项。

祝你好运,我希望这会有所帮助