Runnable可以返回一个值吗?

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,但它必须是最终的才能进入和退出线程,对吧?这样做的正确方法是什么?

spa*_*nia 2

在 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)