2012-02-24 51 views
3

在一个Activity中,我有2个重任务。一种是使用默认行和值创建默认数据库。另一个是从数据库中提取所有数据以在屏幕上填充UI元素。该页面上有超过100个UI元素(统计数据)。在一个文件中有两个AsyncTask内部类是不好的做法吗?

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

我问不好的做法,而不是担心的是同一类AsyncTask是否可以用于两个繁重任务(通过if/else)。

回答

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

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

这确实有OO的优势并且还降低了代码和方式隔开来自BackgroundTask的UI ...

1

我认为如果他们执行完全不同的任务,那么多于一个AsyncTask就可以。

相关问题