Android 异步任务实现

Android 异步任务实现,android,android-asynctask,Android,Android Asynctask,在我的应用程序中,我需要减少从数据库插入视频和其他细节的时间。我试图在我的应用程序中使用AsyncTask概念。但是当我在doInBackground()中执行插入时,它在插入部分中给出了一个错误。另一个类执行插入 abc.插入(参数); 其中abc是我的数据库类的对象 显示的错误是在完成插入的类中的nullpointerexception 有什么解决办法吗 谢谢 niki我不完全理解您的情况,但听起来您是同步问题的受害者-有几个线程正在调用您的插入代码 如果是这种情况,那么简单的解决方案是在插

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

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

显示的错误是在完成插入的类中的nullpointerexception

有什么解决办法吗

谢谢


niki

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

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

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


如果您只是希望在一个工作线程中向数据库添加数据,而不添加UI更新post,那么请使用Java线程而不是AsynTask

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


正如Arhimed所建议的,如果您启动了多个异步任务,那么数据库锁定可能是一个问题。

一些代码确实可以帮助您获得更好的答案。我想我们无法猜测-请共享您的代码和LogCat输出。
private Object lock = new Object(); // a field of your DBHelper

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