在一个文件中有两个AsyncTask内部类是不好的做法吗?

时间:2012-02-24 11:03:20

标签: android android-asynctask

在一个Activity中,我有两个繁重的任务。一种是使用默认行和值创建默认数据库。另一个是从数据库中获取所有数据以在屏幕上填充UI元素。该页面上有超过100个UI元素(统计数据)。

现在,在一个Java代码文件中有两个AsyncTask类会不会很糟糕?一个用于创建默认数据库(仅在第一次启动时激活),另一个用于从数据库获取填充前面提到的UI元素所需的所有数据。

我问的是不良做法,而不是关于同一AsyncTask类是否可以用于这两项重任务(通过if/else)的事实。

3 个答案:

答案 0 :(得分:2)

不。别这么认为。你还怎么做两个后台任务?

我建议不过,为了清楚代码,您可以使用一种设计模式,使用您发送到AsyncTask的请求代码,使用相同的方法区分后台任务的结果。

类似的东西:

new AsyncTask1(this, 0).execute();
new AsyncTask2(this, 1).execute();

AsyncTask然后可以在Activity中回调相同的方法,您可以根据请求代码进行区分。

onBackgroundTaskCompleted(int requestCode, Object result) {
    if (requestCode == 0 ) {
        // do something
    } else {
        // do something else
    }

有关使用此模式使用接口的示例,请查看以下位置的异步类:https://github.com/sfarooq/A-droid-lib/

答案 1 :(得分:1)

  

更好的方法是取出AsyncTask并创建一个公共类   wihich有两个方法1用于获取,一个用于创建数据库..

这确实具有 OO 的优势,同时也减少了您的代码并从BackgroundTask中分离了 UI ......

答案 2 :(得分:1)

我认为如果执行完全不同的任务,可以在活动中使用多个AsyncTask In。