Jay*_*Dee 4 multithreading android messages
我为文件浏览器创建了一个新线程.该线程读取目录的内容.我想要做的是更新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());**
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jay*_*Dee 16
似乎传递简单的消息是基于int ...我需要做的是传递一个Bundle
using Message.setData(Bundle) and Message.getData(Bundle)
Run Code Online (Sandbox Code Playgroud)
好快乐= 0)
//Function From Within The Thread
public void newProjectCreation() {
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putString("Test", "test value");
msg.setData(bundle);
handler2.sendMessage(msg);
}
//Handler in The UI Thread Retreieves The Data
//And Can Update the GUI as Required
private Handler handler2 = new Handler() {
@Override
public void handleMessage(Message msg) {
Bundle bundle = msg.getData();
Toast.makeText(New_Project.this,bundle.getString("Test"),Toast.LENGTH_SHORT).show();
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19069 次 |
| 最近记录: |