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

محل انتقال اطلاعات برنامه بعد از نصب

hamed  9 سال پیش  9 سال پیش
+1 0

یه سوال پایه ای و شاید مبتدیانه داشتم

می خواستم ببینم وقتی برنامه ای را منتشر می کنیم بخش های مختلف آن به کجا منتقل می شوند و در کجا ذخیره می شوند.

این سوال را بیشتر از این بابت می پرسم که فرض کنید در برنامه یک دیتابیس از پیش تهیه شده داریم که می خواهیم اطلاعات را از روی آن بخوانیم. حالا این دیتا بیس را باید کجای برنامه بذاریم و بعد از نصب باید از کجا بخونیم. و موارد مشابه.

0 0
دیتابیس را باید در پوشه assets‬ بزارید (9 سال پیش)
0 0
همونطور که دوستمون گفتن توی پوشه assets میذارید و کدی می نویسید که دیتابیس رو تا برنامه باز میشه به داخل محل مورد نظر کپی کنه روی حافظه و از اونجا دیتابیس رو لود کنه (9 سال پیش)
+1 0
بله. درسته. (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  9 سال پیش
+4 0

شما می تونید اطلاعات رو در یک پوشه به نام assets  قرار بدید (اگر نیست بسازید)

مناسب ترین مکان برای ذخیره پوشه ی دیتای برنامه است ، این همان اطلاعاتی هست که در تنظیمات وقتی روی "پاک کردن داده های برنامه" کلیک می کنیم پاک میشه و مسیری شبیه این داره 

SDCard/Android/data/نام پکیچ شما
SDCard/Android/data/ir.negano.App1/db.sqlite

 باید این پوشه رو در زمان اجرا بسازید.

اینم نحوه ی کپی از Assets

 private boolean copyFromAssets(String FilePath, String Destination) {
    try {
        InputStream is = assetManager.open(FilePath);
        File outpuFile = new File(Destination);
        if (outpuFile.exists()) {
            outpuFile.delete();
        }
        OutputStream os = new FileOutputStream(outpuFile);
        byte[] Buffer = new byte[8 * 1024];
        int len = 0;
        while ((len = is.read(Buffer)) > 0) {
            os.write(Buffer, 0, len);
        }
        is.close();
        os.flush();
        os.close();
        return true;
    }
    catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

// نحوه ی فراخوانی
// اولی نام یا مسیر فایل در استز و دومی مسیر و نام فایل در آدرس نهایی هست اگه پوشه بندی شده باشه به این شکل میشه
// assets/database/db.sqlite => "database/db.sqlite"
// مسیر نهایی هم که میشه یه جایی تو sd card
// Storage/sdcard0/myAppFolder/db.sqlite
if (copyFromAssets("folderInAssets/data.sqlite", App_Path + "data.sqlite")) {
// فایل کپی شده } else { فایل کپی نشده ! }
+1 0
ممنون از پاسخگویی سریعتون. ولی یه مشکلی وجود داره. در همان مثال دیتا بیس فرض کنید بخواهیم توی این دیتابیس تغییراتی هم در حین کار برنامه اعمال کنیم. اون وقت در پایان کار برنامه مجبوریم آن را روی اس دی کارت باقی بذاریم و در این صورت اگر اطلاعات اس دی کارت پاک شود تغییرات ایجاد شده از دست می رود. اگر بخواهیم این تغییرات را در preference ذخیره کنیم آیا محدودیت حجم وجود دارد؟ البته مرتبط ساختن اطلاعات هم خودش داستانیه. (9 سال پیش)
+1 0
یه سوال دیگه هم به ذهنم رسید. اگر حجم این اطلاعات زیاد باشه چطور می تونیم در اول برنامه بدون توقف برنامه را اجرا کنیم؟ و یه سوال دیگه! (ببخشید که اینقدر می پرسم) ما پس از نصب برنامه هم می توانیم فایل به این فولدر assets وارد کنیم؟ (9 سال پیش)
0 0
کامنت اول : اصولش همینه ، اما در preference ها اطلاعات زیاد ذخیره نشه بهتره و قبلا بحث شده سرچ کنید - کامنت دوم : بله با استفاده از Thread ها - خیر به هیچ وجه ! (9 سال پیش)
+1 0
درباره کامنت اول: آیا راهی هست اطلاعات را جایی دور از دسترس کاربر ذخیره کرد که احتمال پاک شدن آن ها وجود نداشته باشه؟ یا باید از راه های ابتکاری مثل کپی در فولدرهای مخفی یا جاهای متفرقه استفاده نمود؟ (9 سال پیش)
0 0
اگه کار اینقدر ریسکی هست ، سمت سرور کار کنید (9 سال پیش)
+1 0
متاسفانه برنامه آفلاینه. در بالا نوشته بودید که "این همان اطلاعاتی هست که در تنظیمات وقتی روی "پاک کردن داده های برنامه" کلیک می کنیم پاک میشه" منظورتون محتویات استز هست؟ یعنی کاربر می تونه اون ها را هم پاک کنه؟ اینجوری که بیچاره می شویم! (9 سال پیش)
0 0
محتویات استز نه. ضمنا کاربر یه فایلی رو پاک کنه خودش بیچاره میشه. شما موظف به اصلاح رفتار کاربر نیستی که! (9 سال پیش)
0 0
اونوقت ایکون برنامه توی چه پوشه ایی قرار میگیره ؟ چطوری میشه بعد از نصب برنامه رو دستکاری کرد ؟ چه مسیر های خاصی وجود داره ؟ (9 سال پیش)
0 0
آقا حامد شما اول برنامه ات همیشه چک کن اگه فایل دیتابیست وجود نداره کپیش کن و اگه وجود داره که هیچ. اینجوری اگه کاربر اشتباها هم برنامه رو پاک کنه مشکلی پیش نمیاد (9 سال پیش)
0 0
@criss منظورت رو نگرفتم! (9 سال پیش)
0 0
@sadegh مگه که چطوری ایکون رو موقع اجرا عوض کنیم (9 سال پیش)
0 0
@criss قبلا بحث شده بود و اکثرا از جمله استاد گفتن نمیشه اما احتمال داره روشی پیدا شده باشه تا الــــــــــــــــــــــــــــــــــان (9 سال پیش)
0 0
@مهندس حسین زاده - خدا شما رو رسوند :) - واقعا به ما چه ربطی داره کاربر دیتا رو پاک کنه ؟! ، خوب ما مثل کاربری که اولین اجراش رو داره برخورد میکنیم که صادق گفت (9 سال پیش)
0 0
آها! بعد نصب؟ باید یه تستی بکنم ببینم!! (9 سال پیش)
+1 0
خیلی قبل تر همین موضوع تو ویندوز مطرح بود. میگفتیم دیتا بیس فایل میگفتن اگه کاربر پاک کرد چی؟ میگفتیم سرور دیتابیس - میگفتن اگه رفت از سرور پاک کرد چی؟ به این نتیجه رسیدیم که بجای پروپزال برنامه یه پروپزال دادیم به کارفرما حدود 200 صفحه در رابطه با تربیت اجتماعی کاربران. اون نامردم دیگه تماس نگرفت - هنوزم نمیدونم چرا! (9 سال پیش)
0 0
من خودم وقتی یه فایلی رو دستکاری میکنم ، پی همه چیز رو به تنم میمالم - واقعا دلیلی نداره نگران باشیم - من حدس میزنم بنده خدا فوت شده باشن و گرنه دلیل شما منظقی بوده D: (9 سال پیش)
+1 0
کار فرهنگی کلا چیز خوبیه من تو برنامه ها بعضی جاها دیدم آیکون برنامه در حین کار عوض می شه مثل سامسونگ مارکت که هر وقت یه آپدیت داشته باشی روی خود آیکون توی منو عددی قرار می گیرد. (9 سال پیش)

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