簡體   English   中英

AsyncTask中的新線程

[英]New thread inside AsyncTask

我剛剛開始使用線程,所以我有一個問題。 在這種情況下,為什么從doInBackground()調用initOctoshape()方法時,為什么會創建一個新線程(與后台線程不同)? 謝謝!

public class PlayerActivity extends CustomActivity implements 
                                          ProblemListener{

 public class PlayChannel extends AsyncTask<Channel, String, String> {
     Channel channel; 
     PlayerActivity thisActivity;

      @Override
      protected String doInBackground(Channel... params) {
             Thread.currentThread().getName();
             channel=params[0];  
             thisActivity=channel.thisActivity;
             initOctoshapeSystem(thisActivity);

      return url;
      } 
 }


 public void initOctoshapeSystem(Activity thisActivity) {
       os = OctoStatic.create(thisActivity, thisActivity, null);
       os.setOctoshapeSystemListener(new OctoshapeSystemListener() {
            @Override
            public void onConnect() {
                 Thread.currentThread().getName();
                 mStreamPlayer = setupStream(OCTOLINK);
                 mStreamPlayer.requestPlay();
            }
      });
 }

 public StreamPlayer setupStream(final String stream) {
    StreamPlayer sp = os.createStreamPlayer(stream);
    sp.setListener(new StreamPlayerListener() {
        @Override
        public void gotUrl(String url) {
        }
    });
 return sp;
 }
}

AsyncTaskdoInBackground(Params...)方法始終在后台線程上執行,並且由於您調用了initOctoshapeSystem(thisActivity); 通過此方法,它還將在此后台線程上執行。 這就是AsyncTask的行為。

所以,

當我從doInBackground()調用方法initOctoshape()時,將創建一個新線程(與后台線程不同)

是不正確的。 您對initOctoshape()調用僅遵循驅動doInBackground()的線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM