Android UI Thread停止其他线程

时间:2015-08-31 21:37:39

标签: java android multithreading

我在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,它是一样的。任何人都知道为什么????

谢谢!

0 个答案:

没有答案