Android 为什么安卓数据库在暂停时插入错误
在我的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
我使用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
将使插入与用户界面分离。为什么不进行唤醒锁定?我的问题是,手机何时会进入暂停状态,而不是只关闭屏幕。