java - android自定义库的架构

标签 java android android-asynctask return-value

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

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

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

第三步: 在 Activity 中传递第 2 步的响应数据。

我希望第 1 步和第 2 步同步,因为如果没有第 1 步,第 2 步将无法工作。而且我不想在处理时阻止该应用程序。经过一些研究后,我发现这可以使用 AsyncTask 类。但似乎我无法从 doInBackgroundonPostExecute 方法返回值。如何完成这个任务?

最佳答案

您必须为第一个 AsyncTask 设置监听器(接口(interface))请尝试以下代码

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

//从activity或fragment中调用异步任务

DemoAsyncTask task = new DemoAsyncTask(new AsyncTaskListener(){
@Override
public void on onTaskCompleted(Object<Type> value);{
//do your second step here
})
};
task .execute();

关于java - android自定义库的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25864227/

相关文章:

android - 如何调用另一个项目中的 Activity ?

java - 使用 AsyncTask 从 url 获取文本。代码由于某种原因无法工作

java - 在 HQL 中使用内部连接的子查询

java - Android Studio Sqlite 自动增量重置

java - 获取从html到android的输入类型值

android - 在之前定义的特定位置将布局添加到另一个布局

android - Android 中 AsyncTask 内的 JSONException

java - 如何仅在 doinbackground 中的方法完成时调用 onPostExecute?

java - 如何计算 (O)N 中的最高和

java - 将二进制文件读入字节数组