在我的应用程序中,我需要减少从数据库插入视频和其他详细信息的时间。我正在尝试在我的应用程序中使用AsyncTask概念。但是当我在doInBackground()中执行它时,它在插入部分中出错。另一个类执行插入。
abc.insert(参数); 其中abc是我的数据库类的对象。
显示的错误是在我的类中进行插入的nullpointerexception。
这有什么解决方案吗?
感谢,
尼基
答案 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,那么数据库锁定可能是个问题。