- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从 JSON 获取数据并在 asyncTask 中执行此操作。问题是 onPostExecute 在 doInBackground 之前执行。
这是我调用执行的 fragment :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new GetPlantsList().execute();
}
还有我的 AsyncTask
public class GetPlantsList extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... voids) {
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Si pas d'erreur
try {
// Here my JSON response
} catch (JSONException e) {
e.printStackTrace();
}
}
};
//On récupére le fichier php via la variable dans strings.xml et on envoi la requete
PlantsListRequest plantsListRequest = new PlantsListRequest(user_id, responseListener, getResources().getString(R.string.php_file) + "get_plants_list.php");
RequestQueue queue = Volley.newRequestQueue(getActivity());
queue.add(plantsListRequest);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// Initialisation de la recycler view (qui va comporter la liste des plantes)
rv_plants = (RecyclerView) view_frag.findViewById(R.id.rv_list_plants);
//On vient créer la liste des plantes avec la class Recycler view Plants List (on lui envoie toutes les plantes de mon utilisateurs)
PlantsList plantsList = new PlantsList(getActivity(), tv_plants_name, tv_plants_variety, iv_plants_img, id_plants);
//Mon recycler view vient afficher la liste des plantes
rv_plants.setAdapter(plantsList);
rv_plants.setLayoutManager(new LinearLayoutManager(getActivity()));
}
}
在 onPostExecute 中,我只是尝试显示从 JSON 获取的所有信息(并在请求结束时执行此操作;))。
我是 Android 编程新手。预先感谢您的帮助;)
最佳答案
The problem is that the
onPostExecute
is executed before thedoInBackground
.
Volley
中的
RequestQueue
通过网络线程异步操作。因此,在 doInBackground
中的 plantsListRequest
响应之前调用 onPostExecute
。
如果你想在网络调用时阻塞线程(任务),你可以使用RequestFuture
。 但是,不建议这样做。您可以简单地通过 NetworkQueue
和 Listener
实现网络调用。 (没有AsyncTask
)。
@Override
protected Void doInBackground(Void... voids) {
RequestFuture<String> future = RequestFuture.newFuture();
//On récupére le fichier php via la variable dans strings.xml et on envoi la requete
PlantsListRequest plantsListRequest = new PlantsListRequest(user_id, future, getResources().getString(R.string.php_file) + "get_plants_list.php");
RequestQueue queue = Volley.newRequestQueue(getActivity());
queue.add(plantsListRequest);
String response = future.get(); // blocking thread
return null;
}
关于java - 带有 ResponseListener 的 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61055076/
所以,我正在尝试在 androidstudio 中构建和应用程序,我想从 mysql 数据库中检索一些数据并在应用程序中使用它。我在线使用 php 脚本和 responselistener 来检索数据
我正在开发一个应用程序,它将在 MySQL 数据库中存储和读取数据。目前,我能够成功获取 1 行,但是当我尝试获取多行时,它不起作用。为了与我的db通信,我使用volley库。 这是迄今为止我的代码:
在我的开发环境中添加响应监听器后,我的 css 文件的内容类型从 text/css 切换为 text/html。我的目标只是为我的 symfony 应用程序的所有响应添加一些缓存 header 。 服
我想从 JSON 获取数据并在 asyncTask 中执行此操作。问题是 onPostExecute 在 doInBackground 之前执行。 这是我调用执行的 fragment : public
我编写了一个简单的程序来了解 snmp4j 异步请求/响应的工作原理: TransportMapping transport = new DefaultUdpTransportMapping(); S
我正在开发一个应用程序,它将存储到 MySQL 数据库并从中读取数据。目前,我能够成功获取 1 行,但是当我尝试获取 多行 时,它不起作用。当我尝试在 ResponseListener 中初始化 JS
我正在尝试使用我的 android 应用登录,但我对 php 和 mySQL 非常不熟悉,需要一些帮助。 我已经创建了寄存器,它成功地将我的用户数据上传到数据库中。尽管当我尝试调用 LoginRequ
我是 volley 和 android 的新手,我已经用 gradle 安装了 volley 并做了与官方教程相同的操作。但是没有响应,这意味着 Errorlistener 和 Responselis
我在 Mac 上的 MAMP PRO 设置上运行 Symfony 应用程序。在我的 symfony 应用程序中,我使用了一个包含以下函数的 ResponseListener: /** * Handl
我是一名优秀的程序员,十分优秀!