- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我这行代码完全没有问题,唯一的问题是每次执行这段代码时,应用程序都会等待所有进程完成,使界面可能有半秒钟没有响应。我找到的最佳解决方案是使用 Thread
但它会导致一些问题,所以我求助于 AsyncTask
我无法理解。任何人都可以帮助我如何将它实现到这行代码吗?
ima.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
search.clearFocus();
currentItem = ssil;
if (currentRoom.equals("None")) {
Toast.makeText(StartMoving.this, "Please select a room before adding an item", Toast.LENGTH_LONG).show();
}else{
try {
String currentitemholder = startmoving.getSingleItemName(currentMove, currentRoom, currentItem);
if (currentitemholder.equals(currentItem)) {
String ssi = startmoving.getSingleItemValue(currentMove, currentRoom, currentItem);
String ssiw = startmoving.getSingleItemWeight(currentMove, currentRoom, currentItem);
String stw = startmoving.getTotalWeight(currentMove);
String srw = startmoving.getRoomWeight(currentMove, currentRoom);
String diw = startmoving.getListItemWeight(currentItem);
int istw = Integer.parseInt(stw);
int isiw = Integer.parseInt(ssiw);
int isi = Integer.parseInt(ssi);
int isrw = Integer.parseInt(srw);
int idiw = Integer.parseInt(diw);
currentItemValue = "" + ++isi;
currentItemWeight = "" + (isiw + idiw);
currentTotalItemWeight = "" + (istw + idiw);
currentRoomWeight = "" + (isrw + idiw);
currentTotalItem = startmoving.getTotalItem(currentMove) + 1;
startmoving.updateItems(currentMove, currentRoom, currentItem, currentItemValue, currentItemWeight);
startmoving.setMoveWeight(currentTotalItemWeight, currentMove);
startmoving.setRoomWeight(currentRoomWeight, currentMove, currentRoom);
startmoving.setTotalItem(currentMove, currentTotalItem);
String displayname = startmoving.getItemName(currentMove, currentRoom);
String displayvalue = startmoving.getItemValue(currentMove, currentRoom);
String displayweight = startmoving.getItemWeightLBS(currentMove, currentRoom);
String displaytotalweight = startmoving.getTotalWeightLBS(currentMove);
String displayroomweight = startmoving.getRoomWeightLBS(currentMove, currentRoom);
roomContent.setText(displayname);
itemValue.setText(displayvalue);
itemWeight.setText(displayweight);
totalweight.setText(displaytotalweight);
roomweight.setText(displayroomweight);
int displaytotalitem = startmoving.getTotalItem(currentMove);
totalitem.setText("" + displaytotalitem);
}
}catch (Exception e) {
// TODO Auto-generated catch block
currentItemValue = "1";
currentItemWeight = ssiw;
String stw = startmoving.getTotalWeight(currentMove);
String srw = startmoving.getRoomWeight(currentMove, currentRoom);
String diw = startmoving.getListItemWeight(currentItem);
int istw = Integer.parseInt(stw);
int isrw = Integer.parseInt(srw);
int idiw = Integer.parseInt(diw);
currentTotalItemWeight = "" + (istw + idiw);
currentRoomWeight = "" + (isrw + idiw);
currentTotalItem = startmoving.getTotalItem(currentMove) + 1;
startmoving.addNewItems(currentMove, currentRoom, currentItem, currentItemValue, currentItemWeight);
startmoving.setMoveWeight(currentTotalItemWeight, currentMove);
startmoving.setRoomWeight(currentRoomWeight, currentMove, currentRoom);
startmoving.setTotalItem(currentMove, currentTotalItem);
startmoving.setTotalItem(currentMove, currentTotalItem);
String displayname = startmoving.getItemName(currentMove, currentRoom);
String displayvalue = startmoving.getItemValue(currentMove, currentRoom);
String displayweight = startmoving.getItemWeightLBS(currentMove, currentRoom);
String displaytotalweight = startmoving.getTotalWeightLBS(currentMove);
String displayroomweight = startmoving.getRoomWeightLBS(currentMove, currentRoom);
roomContent.setText(displayname);
itemValue.setText(displayvalue);
itemWeight.setText(displayweight);
totalweight.setText(displaytotalweight);
roomweight.setText(displayroomweight);
int displaytotalitem = startmoving.getTotalItem(currentMove);
totalitem.setText("" + displaytotalitem);
}
}
}
});
imr.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast")
public void onClick(View v) {
// TODO Auto-generated method stub
search.clearFocus();
currentItem = ssil;
if (currentRoom.equals("None")) {
Toast.makeText(StartMoving.this, "Please select a room before removing an item", Toast.LENGTH_LONG).show();
}else{
try {
String currentitemholder = startmoving.getSingleItemName(currentMove, currentRoom, currentItem);
if (currentitemholder.equals(currentItem)) {
String ssi = startmoving.getSingleItemValue(currentMove, currentRoom, currentItem);
String ssiw = startmoving.getSingleItemWeight(currentMove, currentRoom, currentItem);
String stw = startmoving.getTotalWeight(currentMove);
String srw = startmoving.getRoomWeight(currentMove, currentRoom);
String diw = startmoving.getListItemWeight(currentItem);
int istw = Integer.parseInt(stw);
int isiw = Integer.parseInt(ssiw);
int isi = Integer.parseInt(ssi);
int isrw = Integer.parseInt(srw);
int idiw = Integer.parseInt(diw);
if (isi > 1) {
currentItemValue = "" + --isi;
currentItemWeight = "" + (isiw - idiw);
currentTotalItemWeight = "" + (istw - idiw);
currentRoomWeight = "" + (isrw - idiw);
currentTotalItem = startmoving.getTotalItem(currentMove) - 1;
startmoving.updateItems(currentMove, currentRoom, currentItem, currentItemValue, currentItemWeight);
startmoving.setMoveWeight(currentTotalItemWeight, currentMove);
startmoving.setRoomWeight(currentRoomWeight, currentMove, currentRoom);
startmoving.setTotalItem(currentMove, currentTotalItem);
startmoving.setTotalItem(currentMove, currentTotalItem);
String displayname = startmoving.getItemName(currentMove, currentRoom);
String displayvalue = startmoving.getItemValue(currentMove, currentRoom);
String displayweight = startmoving.getItemWeightLBS(currentMove, currentRoom);
String displaytotalweight = startmoving.getTotalWeightLBS(currentMove);
String displayroomweight = startmoving.getRoomWeightLBS(currentMove, currentRoom);
roomContent.setText(displayname);
itemValue.setText(displayvalue);
itemWeight.setText(displayweight);
totalweight.setText(displaytotalweight);
roomweight.setText(displayroomweight);
int displaytotalitem = startmoving.getTotalItem(currentMove); totalitem.setText("" + displaytotalitem);
}else{
String sstw = startmoving.getTotalWeight(currentMove);
String ssrw = startmoving.getRoomWeight(currentMove, currentRoom);
int isstw = Integer.parseInt(sstw);
int issrw = Integer.parseInt(ssrw);
currentTotalItemWeight = "" + (isstw - idiw);
currentRoomWeight = "" + (issrw - idiw);
currentTotalItem = startmoving.getTotalItem(currentMove) - 1; startmoving.setMoveWeight(currentTotalItemWeight, currentMove);
startmoving.setRoomWeight(currentRoomWeight, currentMove, currentRoom);
startmoving.deleteItem(currentMove, currentRoom, currentItem); startmoving.setTotalItem(currentMove, currentTotalItem);
startmoving.setTotalItem(currentMove, currentTotalItem);
String displayname = startmoving.getItemName(currentMove, currentRoom);
String displayvalue = startmoving.getItemValue(currentMove, currentRoom);
String displayweight = startmoving.getItemWeightLBS(currentMove, currentRoom);
String displaytotalweight = startmoving.getTotalWeightLBS(currentMove);
String displayroomweight = startmoving.getRoomWeightLBS(currentMove, currentRoom);
roomContent.setText(displayname);
itemValue.setText(displayvalue);
itemWeight.setText(displayweight);
totalweight.setText(displaytotalweight);
roomweight.setText(displayroomweight);
int displaytotalitem = startmoving.getTotalItem(currentMove);
totalitem.setText("" + displaytotalitem);
}
}
}catch (Exception e) {
// TODO Auto-generated catch block
}
}
}
});
如您所见,这是两个调用数据库(发送和接收数据)并将其显示到 GUI 的按钮。
编辑
感谢你们的精彩回复!在我决定正确答案之前,我会先研究 AsyncTask。仍然需要处理您提供给我的所有这些信息。
编辑忘了说 startmoving 是我的数据库模块
最佳答案
如果您执行一项持续时间很长的操作,例如加载文件或访问数据,您的 Android 应用程序的用户界面将阻塞,直到相应的代码完成。
为了使用 AsyncTask 类,您必须扩展它并至少覆盖 doInBackground() 方法。
您需要实现的最常见方法如下:
1. onPreExecute() – called on the UI thread before the thread starts running. This method is usually used to setup the task, for example by displaying a progress bar.
2. doInBackground(Params…) – this is the method that runs on the background thread. In this method you should put all the code you want the application to perform in background. Referring to our Simple RSS Aplication, you would put here the code that downloads the XML feed and does the parsing. The doInBackground() is called immediately after onPreExecute(). When it finishes, it sends the result to the onPostExecute().
3. onProgressUpdate() - called when you invoke publishProgress() in the doInBackground().
4. onPostExecute(Result) – called on the UI thread after the background thread finishes. It takes as parameter the result received from doInBackground().
现在在您的代码选择中,您可以做什么。
所有数据库操作和数据操作代码都写在doInBackground(Params…)
方法中,并在onPostExecute(Result)
方法中显示数据。
谢谢。
关于android - 需要更多了解 android 中的 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043001/
我开始在 Ethereum blockchain 上了解如何开发智能合约以及如何写 web-script用于与智能合约交互(购买、销售、统计......)我得出了该怎么做的结论。我想知道我是否正确理解
我正在 UIView 中使用 CATransform3DMakeRotation,并且我正在尝试进行 45º,变换就像向后放置一样: 这是我拥有的“代码”,但显然没有这样做。 CATransform3
我目前正在测试 WebRTC 的功能,但我有一些脑逻辑问题。 WebRTC 究竟是什么? 我只读了“STUN”、“P2P”和其他...但是在技术方面什么是正确的 WebRTC(见下一个) 我需要什么
我在看 DelayedInit在 Scala in Depth ... 注释是我对代码的理解。 下面的 trait 接受一个非严格计算的参数(由于 => ),并返回 Unit .它的行为类似于构造函数
谁能给我指出一个用图片和简单的代码片段解释 WCF 的资源。我厌倦了谷歌搜索并在所有搜索结果中找到相同的“ABC”文章。 最佳答案 WCF 是一项非常复杂的技术,在我看来,它的文档记录非常少。启动和运
我期待以下 GetArgs.hs打印出传递给它的参数。 import System.Environment main = do args main 3 4 3 :39:1: Coul
private int vbo; private int ibo; vbo = glGenBuffers(); ibo = glGenBuffers(); glBindBuffer(GL_ARRAY_
我正在尝试一个 for 循环。我添加了一个 if 语句以在循环达到 30 时停止循环。 我见过i <= 10将运行 11 次,因为循环在达到 10 次时仍会运行。 如果有设置 i 的 if 语句,为什
我正在尝试了解 WSGI 的功能并需要一些帮助。 到目前为止,我知道它是一种服务器和应用程序之间的中间件,用于将不同的应用程序框架(位于服务器端)与应用程序连接,前提是相关框架具有 WSGI 适配器。
我是 Javascript 的新手,我正在尝试绕过 while 循环。我了解它们的目的,我想我了解它们的工作原理,但我在使用它们时遇到了麻烦。 我希望 while 值自身重复,直到两个随机数相互匹配。
我刚刚偶然发现Fabric并且文档并没有真正说明它是如何工作的。 我有根据的猜测是您需要在客户端和服务器端都安装它。 Python 代码存储在客户端,并在命令运行时通过 Fabric 的有线协议(pr
我想了解 ConditionalWeakTable .和有什么区别 class ClassA { static readonly ConditionalWeakTable OtherClass
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
我还没有成功找到任何可以引导我理解 UIPickerView 和 UIPickerView 模型的好例子。有什么建议吗? 最佳答案 为什么不使用默认的 Apple 文档示例?这是来自苹果文档的名为 U
我在看foldM为了获得关于如何使用它的直觉。 foldM :: Monad m => (a -> b -> m a) -> a -> [b] -> m a 在这个简单的例子中,我只返回 [Just
答案What are _mm_prefetch() locality hints?详细说明提示的含义。 我的问题是:我想要哪一个? 我正在处理一个被重复调用数十亿次的函数,其中包含一些 int 参数。
我一直在读这个article了解 gcroot 模板。我明白 gcroot provides handles into the garbage collected heap 然后 the handle
提供了一个用例: 流处理架构;事件进入 Kafka,然后由带有 MongoDB 接收器的作业进行处理。 数据库名称:myWebsite集合:用户 并且作业接收 users 集合中的 user 记录。
你好 我想更详细地了解 NFS 文件系统。我偶然发现了《NFS 图解》这本书,不幸的是它只能作为谷歌图书提供,所以有些页面丢失了。有人可能有另一个很好的资源,这将是在较低级别上了解 NFS 的良好开始
我无法理解这个问题,哪个更随机? rand() 或: rand() * rand() 我发现这是一个真正的脑筋急转弯,你能帮我吗? 编辑: 凭直觉,我知道数学答案是它们同样随机,但我忍不住认为,如果您
我是一名优秀的程序员,十分优秀!