我在UI线程中有一个调用另一个Thread的代码。此新线程等待服务器响应以执行数据库更新。 当新线程发送帖子内容时,服务器发送答案很好,但是当屏幕(活动)加载下一个项目进行计算并再次发送给服务器时,对数据库的更新过程停止。 我的代码看起来像这样
public class MyActivity extends Activity {
onCreate(){ ... }
public void pushButton(View v) {
...
//Call the Thread
MyOwnThread t = new MyOwnThread(arg1, arg2);
t.start();
showTheNextItemToProcess();
}
}
MyOwnThread看起来像这样
public class MyOwnThread extends Thread {
public MyOwnThread(String arg1, Object arg2) { ... }
public void run() {
if(arg1.equals("ok_status") {
//The code on this part stops wen the UI Thread show the next item to process
for( ... ) {
// ...
}
}
}
}
我尝试在新的Thread构造函数中发送变量的克隆,但结果却是一样的。我不知道为什么UI线程会中断另一个线程。使用ListenableFuture(谷歌番石榴)是一样的。
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
ListenableFuture<String> futureTask = service.submit(new Callable<String>(){
public String call() {
//Send the post to the server
}
});
Futures.addCallback(futureTask, new FutureCallback<String>() {
@Override
public void onSuccess(String arg0) {
//when get the answer from the server, executes the db update
//the UI thread stop this too
}
});
我没有在LogCat中看到错误。欢迎你的帮助,抱歉我的英语不好。 谢谢!
EDIT 我更改了我的代码以使用完整线程(扩展线程),通过WIFI连接,应用程序将包发送到服务器,服务器返回响应,应用程序获取从服务器发出的值并触发数据库更新,这很好!但是使用movil数据(本地操作符),app会调用并运行Thread,但线程根本不会继续运行。我把优先级设置为MAX,它是一样的。任何人都知道为什么????
谢谢!