- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在使用 Android Studio 开发一个项目。为了使用套接字完成一些操作,我必须使用 AsyncTask。我正在尝试获取我的数据库中可用的补充剂列表。之后,客户选择其中一些补充品并确认。更改 Activity 是为了计算命令的总价。
This AsyncTask gets the Supplements in the database (works very well)
public class suppTask extends AsyncTask<Void, Void, Boolean> {
public ArrayList<Dessert> listDessert;
suppTask() {
this.listDessert=new ArrayList<Dessert>();
}
@Override
public Boolean doInBackground(Void... params) {
// TODO: attempt authentication against a network service.
Requester client = new Requester();
ArrayList<Dessert> desserts = client.getDessert();
ArrayList<Opening> openings= client.getOpening();
ArrayList<Drinks> drinks = client.getDrink();
ArrayList<Snacks> snacks = client.getSnacks();
Menu menu = client.getMenu(type,num);
//All Supplements.something references to static Arraylist or obj
Supplement.d=desserts;
Supplement.o=openings;
Supplement.s=snacks;
Supplement.d=drinks;
Supplement.m= menu;
return true;
}
An example of one of the get Functions (following the same patern, perfectly fine) :
ArrayList<Dessert> getDessert()
{
connectToServer(); //Connection to the server //with static attributes
ArrayList<Dessert> listDessert = new ArrayList<Dessert>();
JSONArray jArray = new JSONArray();
String s="";
try {
this.message = (String)this.in.readObject(); //message receive from server
this.sendMessage("askDessert"); //message sent to server
s = (String) this.in.readObject(); //received from server
jArray=strToJson(s);
this.message = "bye";
this.sendMessage(this.message);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
finally {
this.stopConnection(); //Disconnect the stream
}
listDessert=fromJSONDessert(jArray);
return listDessert;
}
The second AsyncTask (calculates the total price, works well) :
public static class totalTask extends AsyncTask<Void, Void, Boolean> {
@Override
public Boolean doInBackground(Void... params) {
Requester client = new Requester();
total = client.getTotal("1:0:0:0:0"); //Ids of every Supplement in the dataBase
return true;
}
}
How we open the connection (used for every getters) :
void connectToServer()
{
try {
this.requestSocket=new Socket(host,port);
this.out = new ObjectOutputStream(this.requestSocket.getOutputStream());
this.out.flush();
this.in = new ObjectInputStream(this.requestSocket.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
How we stop the connection (used for every getters)
void stopConnection()
{
try {
this.in.close();
this.out.close();
this.requestSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
The problem is that both AsyncTask works very well alone in a specific order. For example, when we call them like this IT WORKS :
OtherActivity.totalTask to = new OtherActivity.totalTask();
to.execute();
suppTask t = new suppTask();
t.execute();
The thing is that we need to call them in the opposite way (suppTask first and then, when this first task is finished, and the activity has been changed, the task totalTask is called). When we do this, in the second AsyncTask the function getTotal crashes at the beginning when the function connectToServer() is called. It blocks at this line (never reached) :
this.in = new ObjectInputStream(this.requestSocket.getInputStream());
So how do we solve this ? Thank you for your kindness and time.
最佳答案
它们是独立的异步任务。您需要将第二个请求放在 onPostExecute() 主体中。
关于java - Android AsyncTask 订单服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44738533/
我尝试编写一个有多个链接表的解决方案。现在我有另一个问题: 我想将返回的行数限制为 1000。但我想显示 ID 1-1000,下一页 1001-2000。ID可以以不规则的顺序存储在数据库中(ID 1
我已经尝试申请 Drupal 商业优惠券大约 2 天了。我已经负责验证优惠券,但目前在尝试兑换优惠券时遇到了困难。 所以在我的回调函数中,我正在调用: my_module_coupons_coupon
[问]请帮忙,比如有一个数据 tbl_user | Id | name | | 1 | Bayu | | 2 | Indra | | 3 | Rangga | tbl_data | Id | user
我在 Android 应用程序中使用的一些 Parcelable 自定义类遇到了问题,我设法以一种非常奇怪的方式解决了这个问题。 仅在少数特定情况下,我在读取 parcelable 时发生了崩溃(这让
我一直在做一个项目,我需要在数据库中存储订单列表(在本例中为食品)。 我曾尝试四处寻找存储此类列表的最佳方式,但找不到任何方法。 目前,我将数据存储在 phpMyAdmin/SQL 中,订单存储为要打
目录 1、背景简介 2、订单业务 1、订单体系 2、流程管理 2
HBase案例:客户/订单 假设HBase 用于存储客户和订单信息。有两种核心记录类型被摄取:客户记录类型和订单记录类型。 客户记录类型将包含您通常期望的所有内容: 客户编号 客户名称
C-x C-b 显示缓冲区列表。首先是自然顺序,最近使用的缓冲区在顶部,隐藏的缓冲区在底部。 在那里,我现在可以按名称、大小、模式和文件对缓冲区进行排序。但是一旦我点击了这样的选项,我就无法回到原来的
我为 Woocommerce 添加了一个新的排序选项,它将按最低价格排序。我所有的价格都存储在一个自定义属性中,连同一些其他序列化数据。我想要的是有一个回调函数来反序列化这些数据,检查最低价格并按该价
想象一下我有一张 table : ID field1 field2 --- ------- ------ 111 1 11113 112
Kotlin forEach 是按数组的实际顺序遍历数组还是有时可能按其他顺序遍历数组?我的意思是这是否总是打印 1,2,3,...9 或者它可能会打印类似 1,5,3,4,... val numbe
我在 woocommerce 3+ 上创建了 html 电子邮件模板,但我无法通过订单 ID 获取订单项。我试过这个,但对我不起作用。 get_items(); foreach
我对将我自己的内部广告与 AdMob 的广告一起展示并使用按重要性顺序设置 eCPM 值的问题感到有些困惑。 我目前只与 AdMobs 的网络一起转换一个自家广告。 从常见问题解答和 AdMob 帮助
我正在尝试构建一个电子商务数据库,但我不了解订单,产品和客户之间的关系。 有很多数据库示例,但是它们太复杂了。是否有关于可能的表和关系的更简单的解释或示例。 谢谢。 最佳答案 如果客户可以拥有多个订单
我必须对电子商务系统进行一些更改以添加一些附加信息,并希望借此机会进行一些改进并使其更加灵活。当客户下订单时,我们必须为每个订购的商品存储几项信息;例如,产品价格、运费、征收的税款、所做的任何调整。
我正在尝试新的 ASP.NET bundle 功能,但似乎无法让我的自定义排序正常工作。这是我的 JS 文件: bootstrap.js bootstrap.min.js jquery-1.7.2.i
我正在尝试以下代码,并希望获取日期之间的所有订单并打印它们 $orders = $my_query->posts; $order = wc_get_order( $order_id ); $or
我有 ORMLite 数据库对象,它有一个字段: @ForeignCollectionField(eager = true) public ForeignCollection blocks; 现在,当
除了调用 event_list_attendees 并寻呼与会者以尝试找到正确的用户匹配之外,是否有其他方法可以获取门票/订单的用户条形码 ID?这种方法会增加 eventbrite 服务器的负担,并
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 5 年前。 我制作了订单食品应用程序。当我单
我是一名优秀的程序员,十分优秀!