-1

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

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

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

任何示例代码都会很棒,或者您遇到的任何提供示例代码的信息都会很棒。我目前并没有试图以最好的方式来做,只是想把它破解在一起,所以如果你知道简单快捷(但很糟糕)的方法,不要害怕分享。

4

4 回答 4

0

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

于 2013-09-12T11:15:55.623 回答
0

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

于 2013-09-12T11:22:37.280 回答
0

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

这里有两个有用的链接:

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

还有更多。

这里有两种不同的方法可供您作为起点:

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

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

于 2013-09-12T11:14:46.350 回答
0

这可能会帮助你...

//创建时

线程 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);

    }
};  
于 2013-09-12T11:11:47.713 回答