如何在应用程序运行时使用线程连续运行一些代码,使用它提供的信息定期更新应用程序的 UI。
具体来说,该线程将运行一些代码来搜索文本文件,以便找到坐标,然后将其绘制在 UI 上的 PNG 上。这会自动更新说每秒可能每半秒,并会清除图像然后重绘点。
我如何首先设置线程,然后再将信息从线程发送回 UI 并更新?
任何示例代码都会很棒,或者您遇到的任何提供示例代码的信息都会很棒。我目前并没有试图以最好的方式来做,只是想把它破解在一起,所以如果你知道简单快捷(但很糟糕)的方法,不要害怕分享。
如何在应用程序运行时使用线程连续运行一些代码,使用它提供的信息定期更新应用程序的 UI。
具体来说,该线程将运行一些代码来搜索文本文件,以便找到坐标,然后将其绘制在 UI 上的 PNG 上。这会自动更新说每秒可能每半秒,并会清除图像然后重绘点。
我如何首先设置线程,然后再将信息从线程发送回 UI 并更新?
任何示例代码都会很棒,或者您遇到的任何提供示例代码的信息都会很棒。我目前并没有试图以最好的方式来做,只是想把它破解在一起,所以如果你知道简单快捷(但很糟糕)的方法,不要害怕分享。
尝试使用服务(或 IntentService - http://developer.android.com/guide/components/services.html)进行后台工作,并使用 BroadcastReceiver 从服务更新 UI 线程。
使用AsyncTask类(而不是 Runnable)。它有一个名为 onProgressUpdate 的方法,可以影响 UI(它在 UI 线程中调用)。
这是一个非常常见的情况,它远远超出了您问题的简单答案的范围。
这里有两个有用的链接:
http://developer.android.com/guide/components/processes-and-threads.html http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html
还有更多。
这里有两种不同的方法可供您作为起点:
从您的线程更新 gui,只需要与 UI 线程同步。将您的活动传递到您的线程中,它提供了方法:runOnUiThread
定义一个接口来提供回调,让调用 ui 类(活动)实现您的接口并将其注册为您线程的侦听器。然后,您可以随时调用回调。不要同步
这可能会帮助你...
//创建时
线程 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);
}
};