آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اطمینان از کپی دیتابیس

hamcalas  11 سال پیش  11 سال پیش
0 0

سلام

در یک برنامه که بزودی منتشر میشه از دیتابیس آماده استفاده کردم که موقع اجرای برنامه از پوشه ی assets کپی می شود .

برنامه روی امولاتور بخوبی کار می کند اما در بعضی گوشی ها برای اولین استفاده (موقعی که بخوای چیزی از دیتابیس بخوانی) کرش می کند علت این است که دیتابیس برای کپی نیاز به کمی زمان دارد (در گوشی که من تست کردم بیشتر از یک دقیقه  برای دیتابیس 500کیلوبایتی !)

به این خاطر برای اولین استفاده صفحه اسپلیش تهیه کردم و بهش 2 دقیقه زمان دادم مشکل رفع می شود ولی  یک ایراد است.

راهکار مناسب برای این موضع چیست ؟

+1 0
کدهاتون رو قرار بدید شاید دوستان برای حل مشکل کمک کنن - همچنین عملیات کپی شدن یک دیتابیس چند مگی نباید بیشتر از چند ثانیه طول بکشه (بر اساس تجربه میگم) (11 سال پیش)
0 0
این سوال چندین بار پرسیده شده . یک سرچ ساده من خودم سه چهار بار این رو جواب دادم متاسفانه الان اون کد رو ندارم (11 سال پیش)
+1 0
لینک (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
hamcalas  11 سال پیش
0 0

         new File(DIR_DATABASE).mkdirs();

File file = new File(DIR_DATABASE + "/database.sqlite");
boolean isExist = file.exists();


if (isExist) {

} else {
copyDb();

}
database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/database.sqlite", null);
}


private void copyDb() {

AssetManager assetManager = context.getAssets();
InputStream inputStream;
try {
inputStream = assetManager.open("database.sqlite");

HelperIO.copyFile(inputStream, DIR_DATABASE + "/database.sqlite");
}
catch (IOException e) {
e.printStackTrace();
}

}

+1 0
البته دوستمون درست میگن این مسئله خیلی تکراری شده - کدها مشکلی ندارن به نظر - این کار رو در یک Thread جدا انجام بدید. (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .