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

ایجاد یک ProgressBar در کلاس G برای کپی فایل پرحجم

h_uk2009  12 سال پیش  12 سال پیش
+1 0

سلام

من دیتابیسم تقریبا سنگینه و 10 مگابایته وقتی که برنامم میاد بالا یکم زیاد طول میکشه و صفحه سیاهه تا بیاد به خاطر اینه که توی کلاس G اومدم و دیتابیسم رو با کلاس مخصوص کپی کردن استاد فایل دیتابیسم رو توی sd کپی میکنم

حالا سوال اینه که اصلا میشه توی کلاس G اسکرول بار نشون داد ؟! کلاس G مگه زودتر از همه چیز اجرا نمیشه ؟

اگه میشه که خب یک چند تا لینک خوب پروگرس بهم بدید یا کدی بدید دستم بیاد داستان چکار کنم و اگه توی کلاس G نمیشه سوال اینه که باید توی ActivityMain فایل دیتابیسم رو کپی کنم و پروگرس رو نشون بدم ؟

0 0
آفرین بچه ها تاپیک امیدوار کننده ای بود :) مخصوصاً پاسخ های خوب. (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  12 سال پیش
0 0

من تو برنامه ام یه صعحه 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(); }

 

 

0 0
مرصی بسیار عالی (12 سال پیش)
0 0
صداقت عزیز میشه بگی اون شرط کپی کردن دیتابیس چیه خیلی گیرششششششششششم ! همینجا یک شرط خاصی اگه داره بنویس حله (12 سال پیش)
0 0
خواهش میکنم . شرمنده پیامتو ندیده بودم که دیگه آقا مجتبی زحمتشو کشید ;) (12 سال پیش)
0 0
راستی اسمم صادقه D: (12 سال پیش)
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
0 0

ما تو کلاس G کلا contentview نداریم ، یعنی همون UI ، برای این کار بهتره کاره کپی دیتابیس رو تو یه تابع تو کلاس G بنویسی ، از یه کلاس که حالا مثلا اسپلش رو نشون میده ، فراخونی کنی 

 G.CopyDB();
G.CopyDB().intMoved(); // be %

حالا میتونی نسبت به حجم منتقل شده ، پروگرسس بار نشون بدی ، و کاربر رو محکوم به دیدن صفحه سیاه نکنی !

0 0
مرصی بسیار عالی مجتبی عززیزمم (12 سال پیش)
پاسخ به سوال 
مجتبی یگانه  12 سال پیش
0 0

اینم شرط وجود فایل db برای داداش حسین :)

 File db = new File(DIR_SD + "/db.sqlite");
        if (db.exists())
        {
            //check kardane jadval ha !
        }
0 0
مرصی عزیییزمی ی ی دیشب کلی بهش ور رفتم یک پروگرس توپ نوشتم که دیتابیس رو کپی کنه و یکبارم این کارو بکنه .. (12 سال پیش)

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