Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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
Java android自定义库的体系结构_Java_Android_Android Asynctask_Return Value - Fatal编程技术网

Java android自定义库的体系结构

Java android自定义库的体系结构,java,android,android-asynctask,return-value,Java,Android,Android Asynctask,Return Value,我正在构建一个android库。 主类包括connect,getUserSession等方法。工作流包括几个步骤- 步骤1: 在getUserSession方法中。我需要发送一个HttpPOST请求到外部api和 接收响应数据(sessionKey、id、name等)。它就像一种身份验证方法 步骤2: 在连接方法中。它使用步骤1中的响应数据,然后我需要连接到websocket服务器以接收响应数据(userdetails、profilepic等) 步骤3: 传递活动中步骤2的响应数据 我希望第一步

我正在构建一个android库。 主类包括
connect
getUserSession
等方法。工作流包括几个步骤-

步骤1: 在
getUserSession
方法中。我需要发送一个
Http
POST请求到外部api和 接收响应数据(sessionKey、id、name等)。它就像一种身份验证方法

步骤2: 在连接方法中。它使用步骤1中的响应数据,然后我需要连接到
websocket
服务器以接收响应数据(userdetails、profilepic等)

步骤3: 传递活动中步骤2的响应数据

我希望第一步和第二步是同步的,因为没有第一步,第二步就不能工作。我不想在处理过程中阻止应用程序。在做了一些研究后,我发现这可以通过使用AsyncTask类来完成。但我似乎无法从
doInBackground
onPostExecute
方法返回值。如何完成这项任务

您必须为第一个异步任务设置侦听器(接口)请尝试下面的代码

  interface AsyncTaskListener{
     public void onTaskCompleted(Object<Type> value);
  }

  public class DemoAsyncTask extends AsyncTask<String,Void,Void>{
  AsyncTaskListener listener;
  public  DemoAsyncTask(AsyncTaskListener listener){
        this.listener = listener;
  }
  @Override
  protected String doInBackground(Void... params) {
   ///do some task 
    return someResult;
  }
  @Override
  protected void onPostExecute(String result) {
   listener.onTaskCompleted(result);
  }
接口异步任务侦听器{
已完成的公用void onTaskCompleted(对象值);
}
公共类DemoAsyncTask扩展了AsyncTask{
异步任务侦听器;
公共DemoAsyncTask(AsyncTaskListener侦听器){
this.listener=listener;
}
@凌驾
受保护字符串doInBackground(无效…参数){
///做一些工作
返回一些结果;
}
@凌驾
受保护的void onPostExecute(字符串结果){
onTaskCompleted(结果);
}
//从活动或片段调用异步任务

DemoAsyncTask task = new DemoAsyncTask(new AsyncTaskListener(){
@Override
public void on onTaskCompleted(Object<Type> value);{
//do your second step here
})
};
task .execute();
DemoAsyncTask任务=新建DemoAsyncTask(新建AsyncTaskListener()){
@凌驾
onTaskCompleted上的public void(对象值){
//在这里做你的第二步
})
};
task.execute();

谢谢,简单明了。非常感谢!您好,您能提供一些好的资料来学习这项技术吗?请检查此项