在Android中向AsyncTask传递空值

15

如果我不传递任何参数,该如何实例化、调用和扩展AsyncTask类?

此外,我在UI中设置了一个TextView来显示计算出的结果。

谢谢, Ben

2个回答

32

在onPostExecute的结果中,没有参数和结果位图的异步示例实现

/**
 * My Async Implementation without doInBackground params
 * 
 */
private class MyAsyncTask extends AsyncTask<Void, Void, Bitmap> {

    @Override
    protected Bitmap doInBackground(Void... params) {

        Bitmap bitmap;

        .... 

        return bitmap;
    }

    protected void onPostExecute(Bitmap bitmap) {

        ....
    }
}

在您的活动中,您应该添加此实现:

MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();

在调用myAsyncTask.execute时,需要提供参数吗? - Ramesh Pareek
是的。在这种情况下,该函数可以无需参数执行。如果您需要更多信息,请与我联系。 - d.danailov

11

我认为你想要问的是如何编写一个不需要任何参数的AsyncTask。诀窍在于在类的扩展中定义您希望用作参数和返回值的内容:

class MyClass extends AsyncTask<Void, Void, Void>,例如不需要任何参数并且也不返回任何值。 AsyncTask<String, Void, Drawable> 需要一个字符串(或多个字符串)并返回Drawable(从其自己的doInBackground方法到其自己的onPostExecute方法)。


谢谢,这非常有帮助。我需要在我建立的自定义视图上设置一些文本(没有设置或返回参数),但是我该如何做到这一点? - Ben Taliadoros
你可以在AsyncTask类中创建一个构造函数,在其中传递一个视图的引用。如果你将其保存在类中的变量中,你可以在onPostExecute方法中使用该变量来设置一些文本。但一定要在onPostExecute中设置文本,因为Android不允许你在非UI线程(即你的AsyncTask)中更改UI,除非你在onPostExecute中这样做。 - Lars

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接