Android 为什么安卓数据库在暂停时插入错误

Android 为什么安卓数据库在暂停时插入错误,android,database,android-asynctask,Android,Database,Android Asynctask,在我的android项目中,我有一个大数据要插入数据库。 我使用AsyncTask将大数据插入数据库。插入平均需要5分钟 但当我的手机屏幕关闭时,就会出现两个错误 1- for complete inserting the Screen must be On. 2- if one or many time Screen will be off then database not good inserted. 问题 1-我错在哪里。 2-将大数据插入数据库的其他方式 我的代码的一部分 pub

在我的android项目中,我有一个大数据要插入数据库。
我使用AsyncTask将大数据插入数据库。插入平均需要5分钟

但当我的手机屏幕关闭时,就会出现两个错误

1- for complete inserting the Screen must be On.  
2- if one or many time Screen will be off then database not good inserted.
问题

1-我错在哪里。
2-将大数据插入数据库的其他方式

我的代码的一部分

public class MainActivity extends Activity {
    DatabaseHandler db;
    MobileInformation   mobile;
    private          SetDataBaseTask    setDataBaseTask;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        db = new DatabaseHandler(this);

        mobile = new MobileInformation();
        preferences = PreferenceManager.getDefaultSharedPreferences(this);
        String state = preferences.getString("IsSetDataBase","");
        if ( !state.equals("yes"))
        {
            setDataBaseTask=new setDataBaseTask();  
            setDataBaseTask.execute();
        }
    }

    public void firstDatabaseInitialize()
    {
            for (int i = 0;i < samsung0.brandStringList.length ; i++ )
            {
                mobile.Clean();
                mobile.Alert_types = samsung0.Alert_typesStringList[i];
                mobile.brand = samsung0.brandStringList[i];
                //and something other

                db.insertMobileInfo(mobile);
            }
                            //and many for for inserting
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        if (Loading==true)
        {
            stopLoadingAndDownloading();
            if (setDataBaseTask != null && setDataBaseTask.getStatus() != AsyncTask.Status.FINISHED)
                setDataBaseTask.cancel(true);
        }
        db.close();
    }

    private class SetDataBaseTask extends AsyncTask<Void, Void, String> {

        @Override
        protected void onPreExecute() {
            showLoading();
        }

        @Override
        protected String doInBackground(Void... esult) {
            String msg="";
            db.open();
            db.clearTable("indexing");
            db.clearTable("mobile");
            firstDatabaseInitialize();
            db.close();
            return msg;
        }

        @Override
        protected void onPostExecute(String result) { 
            stopLoadingAndDownloading();    

             preferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
             SharedPreferences.Editor editor = preferences.edit();
             editor.putString("IsSetDataBase","yes");
             editor.commit();
        }
    }
}
公共类MainActivity扩展活动{
数据库处理程序数据库;
移动信息;
私有SetDataBaseTask SetDataBaseTask;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db=新的DatabaseHandler(此);
手机=新手机信息();
preferences=PreferenceManager.getDefaultSharedPreferences(此);
String state=preferences.getString(“IsSetDataBase”,“”);
如果(!state.equals(“yes”))
{
setDataBaseTask=新建setDataBaseTask();
setDataBaseTask.execute();
}
}
public void firstDatabaseInitialize()
{
对于(int i=0;i
在我的android项目中,我有一个大数据要插入数据库。

然后,您可以使用,当插入完成时,发送广播,活动可以注册该广播操作(也需要注销),以便显示一些UI更新

我正在使用AsyncTask将大数据插入数据库。插入平均需要5分钟。


我不认为这是个好主意,因为在方向改变的时候你就完蛋了!此外,您将在插入期间泄漏父活动。因此,将插入移动到一个
IntentService
将使插入与用户界面分离。

为什么不进行唤醒锁定?我的问题是,手机何时会进入暂停状态,而不是只关闭屏幕。