[英]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;
}
}
AsyncTask
的doInBackground(Params...)
方法始終在后台線程上執行,並且由於您調用了initOctoshapeSystem(thisActivity);
通過此方法,它還將在此后台線程上執行。 這就是AsyncTask
的行為。
所以,
當我從doInBackground()調用方法initOctoshape()時,將創建一個新線程(與后台線程不同)
是不正確的。 您對initOctoshape()
調用僅遵循驅動doInBackground()
的線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.