ایجاد یک ProgressBar در کلاس G برای کپی فایل پرحجم
سلام
من دیتابیسم تقریبا سنگینه و 10 مگابایته وقتی که برنامم میاد بالا یکم زیاد طول میکشه و صفحه سیاهه تا بیاد به خاطر اینه که توی کلاس G اومدم و دیتابیسم رو با کلاس مخصوص کپی کردن استاد فایل دیتابیسم رو توی sd کپی میکنم
حالا سوال اینه که اصلا میشه توی کلاس G اسکرول بار نشون داد ؟! کلاس G مگه زودتر از همه چیز اجرا نمیشه ؟
اگه میشه که خب یک چند تا لینک خوب پروگرس بهم بدید یا کدی بدید دستم بیاد داستان چکار کنم و اگه توی کلاس G نمیشه سوال اینه که باید توی ActivityMain فایل دیتابیسم رو کپی کنم و پروگرس رو نشون بدم ؟
من تو برنامه ام یه صعحه splash گذاشتم که بعد از G اجرا میشه که توش یه انیمیشن اجرا میشه و با استفاده از 3 thread اونو کد نویسی کردم.
یکی انیمشن رو اجرا میکنه
یکی همزمان دیتابیس رو کپی میکنه
یکی هم متغییرهای برنامه ام رو ( که نمیشد در G مقداردهی کنم به دلایلی) مقدار دهی میکنه و در نهایت وقتی انیمیشن تموم میشه intent انجام میشه
اینطوری تا کاربر مشغول دیدن انیمیشنه ، دیتابیس روی سیستم کپی میشه.
البته کپی دیتابیس فقط مخصوص بار اوله و برای دفعه های بعدی چک میکنه که آیا دیتابیس وجود داره یا نه و اگه وجود داشت که دیگه کپی رو انجام نمیده
حدودا همچین چیزی :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
// اجرای انیمیشن
}
});
thread1.start();
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
//کپی دیتابیس
}
});
thread2.start();
Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
//مقداردهی متغییر ها
}
});
thread3.start();
}
ما تو کلاس G کلا contentview نداریم ، یعنی همون UI ، برای این کار بهتره کاره کپی دیتابیس رو تو یه تابع تو کلاس G بنویسی ، از یه کلاس که حالا مثلا اسپلش رو نشون میده ، فراخونی کنی
G.CopyDB();
G.CopyDB().intMoved(); // be %
حالا میتونی نسبت به حجم منتقل شده ، پروگرسس بار نشون بدی ، و کاربر رو محکوم به دیدن صفحه سیاه نکنی !
اینم شرط وجود فایل db برای داداش حسین :)
File db = new File(DIR_SD + "/db.sqlite");
if (db.exists())
{
//check kardane jadval ha !
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .