使用线程运行代码并更新UI Android

时间:2013-09-12 11:02:48

标签: android multithreading

如何在应用程序运行时使用线程连续运行某些代码,并使用其提供的信息定期更新应用程序的UI。

具体来说,线程会运行一些搜索文本文件的代码,以便找到坐标,然后在UI上的PNG上绘制坐标。这将自动更新说每秒可能每半秒,并清除图像然后重绘点。

我如何首先设置线程,然后第二个将信息从线程发送回UI并让它更新?

任何示例代码都很棒或者您遇到的任何信息都会提供示例代码。我现在不是试图以最好的方式做到这一点,只是试图一起破解它,所以如果你知道简单快速(但可怕)这样做的方式,不要害怕分享。

4 个答案:

答案 0 :(得分:0)

这可能有助于你...

//创建

Thread currentThread = new Thread(this);         currentThread.start();

创建后

public void run() {
    try {
        Thread.sleep(4000);

        threadHandler.sendEmptyMessage(0);
    } catch (InterruptedException e) {
        //don't forget to deal with the Exception !!!!!
    }
} 

private Handler threadHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {      


        Intent in = new Intent(getApplicationContext(),****.class);
        startActivity(in);

    }
};  

答案 1 :(得分:0)

这是一个非常常见的情况,它远远超出了你问题的简单答案的范围。

以下是两个有用的链接:

http://developer.android.com/guide/components/processes-and-threads.html http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html

还有更多。

以下是两种不同的方法作为起点:

  1. 从您的线程更新gui,只需要与UI线程同步。将您的Activity传递给您的线程,它提供了方法:runOnUiThread

  2. 定义一个提供回调的接口,让调用ui类(activity)实现你的接口并将其注册为你的线程的监听器。然后你可以随时调用回调。不要同步

答案 2 :(得分:0)

尝试使用服务(或IntentService - http://developer.android.com/guide/components/services.html)进行后台工作,并尝试使用BroadcastReceiver更新服务中的UI线程。

答案 3 :(得分:0)

使用AsyncTask类(而不是Runnable)。它有一个名为onProgressUpdate的方法,它可以影响UI(它在UI线程中调用)。