- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
是否有可能某些调用 publishProgress 被 onProgressUpdate 遗漏了?我的意思是,在使用 publishProgress 调用的情况下,doInBackground 和 onProgressUpdate 回调之间是否可能存在一次传输未命中。因为我看到了。
class DoSomething extends AsyncTask Void, String, Void {
String[] S = new String[] {"a", "b", "c", "d"};
void doInBackground(Void... ps) {
for(String s : S) {
publishProgress(s);
}
}
void onProgressUpdate(String... vs) {
Log.d("", vs[0]);
}
我遇到的结果
a b b d
最佳答案
好的。我深入挖掘并找到答案:doInBackground
和 onProgressUpdate
之间的消息传输不是串行的,而是异步的(来自基类名称)。 doInBackground
中使用 publishProgress(xx)
的任何调用最终都会到达 onProgressUpdate
但不是一对一。
例如,非常虚拟的演示:
doInBackgroud() {
String s;
for(i=1 to 10) {
s = i.toString();
publishProgress(s);
}
}
onProgressUpdate(String par) {
Log.d(par);
}
结果可以是:1 2 2 3 4 5 5 5 6 7
什么?别担心,我们通过引用发送局部变量 s(在 doinback.),并且在 onProgressUpdate
被调用并且它正在记录它的值时,doInBackground
可能正在改变s 的值。这会在 onProgressUpdate
中产生意想不到的值。但是所有 publishProgress 调用都会调用 onProgressUpdate
方法。
如果我们写:
doInBackgroud() {
for(i=1 to 10) {
String s = i.toString();
publishProgress(s);
}
}
onProgressUpdate(String par) {
Log.d(par);
}
这次在正常情况下,结果一定是:1 2 3 4 5 6 7 8 9 10
这就是我们所期望的,不是吗?
如果有更好的主意,我想听听
任何评论都将受到欢迎。
注意:也许情况太简单了,但节省了我一周的时间。
关于android - onProgressUpdate 遗漏了一些发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6967087/
我正在尝试运行某人给我的一些 C++ 代码。起初有一个指向 istream 文件的断开链接,我通过添加包含路径修复了这个问题: C:\Program Files (x86)\Embarcadero\R
谁能告诉我如何防止 .git 目录的内容被上传到 PyPi。我的 MANIFEST.in 看起来像这样: global-include *.py *.js *.rst *.html *.css *.l
最近在 typescript 项目的VSCode中遇到如下情况: 文件:some-interface.ts // no import statements have been skipped. Thi
为我找到这个问题的合适标题有点困难,所以也许这个例子会澄清我的问题。 我正在发出 ajax 请求以将一些变量从 JS 传递到 PHP。这些变量之一是带有一些选项的 URL,即 https://www.
我是一名优秀的程序员,十分优秀!