如何在应用程序运行时使用线程连续运行某些代码,并使用其提供的信息定期更新应用程序的UI。
具体来说,线程会运行一些搜索文本文件的代码,以便找到坐标,然后在UI上的PNG上绘制坐标。这将自动更新说每秒可能每半秒,并清除图像然后重绘点。
我如何首先设置线程,然后第二个将信息从线程发送回UI并让它更新?
任何示例代码都很棒或者您遇到的任何信息都会提供示例代码。我现在不是试图以最好的方式做到这一点,只是试图一起破解它,所以如果你知道简单快速(但可怕)这样做的方式,不要害怕分享。
答案 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
还有更多。
以下是两种不同的方法作为起点:
从您的线程更新gui,只需要与UI线程同步。将您的Activity传递给您的线程,它提供了方法:runOnUiThread
定义一个提供回调的接口,让调用ui类(activity)实现你的接口并将其注册为你的线程的监听器。然后你可以随时调用回调。不要同步
答案 2 :(得分:0)
尝试使用服务(或IntentService - http://developer.android.com/guide/components/services.html)进行后台工作,并尝试使用BroadcastReceiver更新服务中的UI线程。
答案 3 :(得分:0)
使用AsyncTask类(而不是Runnable)。它有一个名为onProgressUpdate的方法,它可以影响UI(它在UI线程中调用)。