Android 如何将值传递给AsyncTask?
在doInBackground()方法完成其任务后,在下面的代码中(对我来说结构有点复杂),从AsyncTask的方法gotUrl()获取url到doInBackground()方法的正确方法是什么,以便在onPostExecute()中使用它Android 如何将值传递给AsyncTask?,android,android-asynctask,iptv,Android,Android Asynctask,Iptv,在doInBackground()方法完成其任务后,在下面的代码中(对我来说结构有点复杂),从AsyncTask的方法gotUrl()获取url到doInBackground()方法的正确方法是什么,以便在onPostExecute()中使用它 public class PlayerActivity extends CustomActivity implements ProblemListener{
public class PlayerActivity extends CustomActivity implements
ProblemListener{
public class PlayChannel extends
AsyncTask<CustomChangeChannel, String, String> {
@Override
protected String doInBackground(CustomChangeChannel... params) {
initOctoshapeSystem();
return url;
}
@Override
protected void onPostExecute(String url){
}
}
public void initOctoshapeSystem() {
os = OctoStatic.create(this, this, null);
os.setOctoshapeSystemListener(new OctoshapeSystemListener() {
@Override
public void onConnect() {
mStreamPlayer = setupStream(OCTOLINK);
mStreamPlayer.requestPlay();
}
});
}
public StreamPlayer setupStream(final String stream) {
StreamPlayer sp = os.createStreamPlayer(stream);
sp.setStatusChangedListener(new StatusChangedListener() {
@Override
public void statusChanged(byte oldStatus,
final byte newStatus) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//todo
}
});
}
});
sp.setListener(new StreamPlayerListener() {
@Override
public void gotUrl(String url) {
//String to be passed
}
});
return sp;
}
}
public class PlayerActivity扩展了CustomActivity实现
问题听众{
公共类播放频道扩展
异步任务{
@凌驾
受保护字符串doInBackground(CustomChangeChannel…参数){
initOctorShapeSystem();
返回url;
}
@凌驾
受保护的void onPostExecute(字符串url){
}
}
public void initOctorShapeSystem(){
os=OctoStatic.create(this,this,null);
setOctoshapeSystemListener(新的OctoshapeSystemListener(){
@凌驾
公共连接无效(){
mStreamPlayer=setupStream(OCTOLINK);
mStreamPlayer.requestPlay();
}
});
}
公共StreamPlayer设置流(最终字符串流){
StreamPlayer sp=os.createStreamPlayer(流);
sp.setStatusChangedListener(新的StatusChangedListener(){
@凌驾
公共无效状态已更改(字节旧状态,
最终字节(状态){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
//待办事项
}
});
}
});
sp.setListener(新的StreamPlayerListener(){
@凌驾
公共void gotUrl(字符串url){
//要传递的字符串
}
});
返回sp;
}
}
更改此选项
public class PlayChannel extends
AsyncTask<CustomChangeChannel, String, String>
然后把它放到doInBackground中:
protected Void doInBackground(String... params) {
String yourURL = params[0];
return null;
}
可能是重复的请查看此答案中的图片:@MarkB否这不是重复的。否。我想从gotUrl()方法传递它。因此,您可以使用gotUrl方法中的URL(.execute(URL))执行异步任务。
PlayChannel channel = new PlayChannel(url);
AsyncTask<Param1, Param2, Param3>
AsyncTask<Void, Void, Void>
AsyncTask<String, Void, Void>
mAsyncTask.execute("your url");
protected Void doInBackground(String... params) {
String yourURL = params[0];
return null;
}