bwo*_*gie 6 multithreading android runnable
Runnable是否可以返回值?我需要对Editable进行一些密集的工作,然后将其返回.这是我的模拟代码.
public class myEditText extends EditText {
...
private Editable workOnEditable() {
final Editable finalEdit = getText();
Thread mThread = new Thread(new Runnable() {
public void run() {
//do work
//Set Spannables to finalEdit
}
});
mThread.start();
return finalEdit;
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以显然我的第一个问题是我正在尝试更改finalEdit,但它必须是最终的才能进入和退出线程,对吧?这样做的正确方法是什么?
在 Java 中,Runnable 无法“返回”值。
特别是在 Android 中,处理您的场景类型的最佳方法是使用AsyncTask。它是一个泛型类,因此您可以指定要传入的类型以及返回到 onPostExecute 函数的类型。
在您的情况下,您将创建一个AsyncTask<Editable, Void, TypeToReturn>. 就像是:
private class YourAsyncTask extends AsyncTask<Editable, Void, Integer> {
protected Long doInBackground(Editable... params) {
Editable editable = params[0];
// do stuff with Editable
return theResult;
}
protected void onPostExecute(Integer result) {
// here you have the result
}
}
Run Code Online (Sandbox Code Playgroud)