且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android的 - 为什么第二个线程暂停第一个执行?

更新时间:2023-02-06 18:32:28

您需要在线程(而不是发布可运行)的HTTP请求。然后,当你有下载的数据,您可以创建与该数据将更新该Runnable由UI线程执行图形和后一个可运行。下面是一个例子:

You need to make the http requests in the threads (not the posted runnables). Then, when you have the data downloaded, you create a runnable with that data that will update the graph and post that runnable to be executed by the UI thread. Here is an example:

public class LoopExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    thread_updater1s.start();
    thread_updater2.start();
}// end of onCreate

Thread thread_updater1s = new Thread() {
    @Override
    public void run() {
        try {
            while (true) {
                final Object data = getDataFromServer1();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        updateGraph1(data);
                    }
                );
                sleep(1000);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

Thread thread_updater2 = new Thread() {
    @Override
    public void run() {
        try {
            while (true) {
                final Object data = getDataFromServer2();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        updateGraph2(data);
                    }
                );
                sleep(60000);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

显然,通过重新您的数据下载presents合适的类改变最终目标数据。

Obviously, change that final Object data by the appropriate class that represents your data downloaded.