AsyncTask实现

时间:2011-03-13 08:26:24

标签: android android-asynctask

在我的应用程序中,我需要减少从数据库插入视频和其他详细信息的时间。我正在尝试在我的应用程序中使用AsyncTask概念。但是当我在doInBackground()中执行它时,它在插入部分中出错。另一个类执行插入。

abc.insert(参数); 其中abc是我的数据库类的对象。

显示的错误是在我的类中进行插入的nullpointerexception。

这有什么解决方案吗?

感谢,

尼基

2 个答案:

答案 0 :(得分:0)

我没有完全理解你的情况,但听起来你是同步问题的受害者 - 几个线程正在调用你的插入代码。

如果是这种情况,则simle解决方案是在您的插入代码周围使用Java synchronized语句,例如:

public synchronized void insert() { /* code to insert */ }

private Object lock = new Object(); // a field of your DBHelper

// somewhere below in your DBHelper
synchronized (lock) {
     /* code to insert */
}

答案 1 :(得分:0)

如果您只是想在工作线程中向数据库添加数据而没有添加UI更新,那么请使用AsnceTask中的Java Threads。

AsyncTask的唯一目标是在后台执行昂贵的操作,并在执行操作后更新UI。

正如Arhimed所建议的那样,如果你已经解雇了多个AsyncTasks,那么数据库锁定可能是个问题。