Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将值传递给AsyncTask?_Android_Android Asynctask_Iptv - Fatal编程技术网

Android 如何将值传递给AsyncTask?

Android 如何将值传递给AsyncTask?,android,android-asynctask,iptv,Android,Android Asynctask,Iptv,在doInBackground()方法完成其任务后,在下面的代码中(对我来说结构有点复杂),从AsyncTask的方法gotUrl()获取url到doInBackground()方法的正确方法是什么,以便在onPostExecute()中使用它 public class PlayerActivity extends CustomActivity implements ProblemListener{

在doInBackground()方法完成其任务后,在下面的代码中(对我来说结构有点复杂),从AsyncTask的方法gotUrl()获取url到doInBackground()方法的正确方法是什么,以便在onPostExecute()中使用它

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;
}