【发布时间】:2011-06-09 23:04:43
【问题描述】:
我为文件浏览器创建了一个新线程。线程读取目录的内容。我想要做的是更新 UI 线程以绘制文件和文件夹的图形表示。我知道我无法从新线程中更新 UI,所以我想做的是:
当文件扫描线程遍历目录时,文件和文件夹将文件路径字符串传递回 UI 线程。 UI 线程中的处理程序然后绘制传回文件的图形表示。
public class New_Project extends Activity implements Runnable {
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Log.d("New Thread","Proccess Complete.");
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}
};
public void fileScanner(){
//if (!XMLEFunctions.canReadExternal(this)) return;
pd = ProgressDialog.show(this, "Reading Directory.",
"Please Wait...", true, false);
Log.d("New Thread","Called");
Thread thread = new Thread(this);
thread.start();
}
public void run() {
Log.d("New Thread","Reading Files");
getFiles();
handler.sendEmptyMessage(0);
}
public void getFiles() {
for (int i=0;i<=allFiles.length-1;i++){
//I WANT TO PASS THE FILE PATH BACK TU A HANDLER IN THE UI
//SO IT CAN BE DRAWN.
**passFilePathBackToBeDrawn(allFiles[i].toString());**
}
}
}
【问题讨论】:
-
以上代码仅用于演示目的,帮助理解我想要做什么=0)
-
为什么不能使用处理程序的 post 方法?你在哪里创建你的处理程序?在 ui 线程中?
-
这就是亨利,我不知道我应该做什么......那里的代码几乎就是我关于线程的内容。我不是说我不能让它工作......我只是说我不知道该怎么做=0)
标签: android multithreading messages