قوانینی که هر توسعه دهنده اندروید باید آنها را بداند- بخش اول

قوانینی که هر توسعه دهنده اندروید باید آنها را بداند- بخش اول

با گسترش محبوبیت سیستم عامل اندروید در بین کاربران، توسعه دهندگان بیشتری توجه خود را به سمت ساخت و توسعه اپلیکیشن های اندروید معطوف کرده اند. چنانچه با زبان برنامه نویسی موردنیاز برای این کار آشنایی داشته باشید، به راحتی می توانید یک اپلیکیشن بسازید که مطابق انتظار شما کار می کند، اما به یاد داشته باشید که تنها ساخت اپلیکیشنی که کار کند به این معنا نیست که شما یک توسعه دهنده خوب و موفق هستید. بسیاری از اپلیکیشن ها در حین اجرای خود به حالت ANR برمی خورند و از کار باز می ایستند و این شرایط به هیچ عنوان برای کاربران خوشایند نبوده و احتمالا آنها پس از مشاهده چنین وضعیتی یک ستاره و نظر بدی برای اپلیکیشن شما ثبت خواهند کرد، در نهایت نیز در پلی استور یا سایر استورهای اندروید به دنبال جایگزین بهتری برای این اپلیکیشن می گردند.توسعه اپلیکیشن اندروید

از این رو تمرکز بر توسعه اپلیکیشن هایی که کارآیی بهتری دارند یک لازمه تلقی می شود، اپلیکیشن ها برای اجرای بهتر به موراد زیر وابسته اند:

1. ریسپانسیو بودن صفحه

2. تعامل

3. میزان کاربرد اپلیکیشن

4. پشتیبانی از گوشی های بسیار قدیمی

5. ظاهر و احساس اندروید

حال که با مواردی که باید در حین توسعه اپلیکیشن اندروید بر روی آنها تمرکز کنیم آشنا شدیم، چه قوانینی را برای پیاده سازی این موارد باید به کار گیریم؟ در این مطلب با ما همراه باشید تا به قوانین اصلی در توسعه اپلیکیشن اندروید بپردازیم.

1. همواره از تردهای پس زمینه برای فرآیندهای زمان بر استفاده کنیدتوسعه اپلیکیشن اندروید

مشاهده دیالوگ بالا در حین استفاده از اپلیکیشن برای تمامی کاربران اندروید آزاردهنده است، این دیالوگ بدین معناست که واکنش موردنیاز به عملیات کاربر با تاخیر مواجه شده و اپلیکیشن قادر به پاسخ گویی و ادامه عملیات نمی باشد. این شرایط موجب ناامیدی و دلسردی کاربران شده و نظرات منفی و بدی از جانب آنها را نتیجه خواهد بخشید.

اما مشکل چیست؟ مشکل اصلی این است که شما ترد اصلی را توسط یک فرآیند زمانبر مسدود کرده اید و موارد زیر را می توان به عنوان مثال هایی از چنین فرآیندهایی محسوب کرد:

- بارگذاری عکس از سرور

- نوشتن یا خواندن داده بر روی SDcard

- اجرای کوئری بر روی پایگاه داده

- فراخوانی نتورک

- بارگذاری بیت مپ

راه حل:

هموراه سعی کنید چنین فرآیندهایی را در ترد پس زمینه قرار دهید، می توانید از AsyncTask برای چنین عملیاتی استفاده کنید.

2. نمایش کارآمد بیت مپ ها

"ارزش یک عکس به اندازه هزار کلمه است" و این عبارت در دنیای مهندسین و برنامه نویسان نیز صدق می کند. ما از تصاویر بیت مپ برای بهبود ظاهر محتوای خود استفاده می کنیم، در حالی که این تصاویر به شدت حافظه مصرف می کنند. برای نمونه یک عکس 1000*1000 را در نظر بگیرید که نسبتا کوچک است، پیش از نمایش این عکس باید آن را در حافظه بارگذاری نماییم و حافظه کلی موردنیاز برای نمایش عکس به صورت زیر است:

حافظه موردنیاز = 4 * طول عکس * عرض عکستوسعه اپلیکیشن اندروید

بنابراین نمایش تصویر با ابعادی که به آن اشاره شد به 4 میلیون بایت یا 4 مگابایت حافظه نیاز خواهد داشت و باید این مقدار حافظه را برای نمایش یک عکس کوچک اختصاص دهیم. یک گوشی xolo a500s را در نظر بگیرید که رزولوشن صفحه نمایش آن 800*480 می باشد، اگر سعی کنیم همین عکس را در این گوشی نمایش دهیم، باید بیش از 800*480*4 یعنی چیزی معادل 1.5 مگابایت حافظه را به این کار اختصاص دهیم، اما این کار چگونه امکان پذیر است؟ روش های گوناگونی برای این کار وجود دارند و در زیر سه روش شرح داده شده است:

بارگذاری تصویر بیت مپ در ترد پس زمینه

Bitmapfactory.decode: چنانچه داده منبع از دیسک یا لوکیشن نتورک خوانده می شود، نباید این متد را در ترد UI اصلی به اجرا در آورد. مدت زمان بارگذاری این داده غیر قابل پیش بینی بوده و به چندین عامل بستگی دارد، برای نمونه می توان به سرعت خواندن از دیسک یا نتورک، اندازه عکس، قدرت سی پی یو و غیره اشاره کرد. چنانچه یکی از این تسک ها ترد UI را مسدود کند، سیستم اپلیکیشن شما را به عنوان non-responsive پرچم گذاری کرده و کاربر می تواند آن را ببندد.

نسخه کم حجم را در حافظه بارگذاری کنید

برخی اوقات به بهترین رزولوشن از یک عکس نیازی نداریم و در این شرایط می توان حجم عکس را کم کرد، بدین ترتیب صرفه جویی چشمگیری در میزان حافظه مصرفی می نمایید. چنانچه اندازه یک عکس 1000*1000 را به 500*500 کاهش دهید، به جای اختصاص 4 مگابایت، می توان تنها 1 مگابایت را برای بارگذاری و نمایش این تصویر به حافظه اختصاص داد.

کش کردن بیت مپ هنگام استفاده در ListView ،GridView یا ViewPager

در اجزایی مانند ListView ،GridView و ViewPager باید مجموعه بزرگ تری از تصاویر را در حافظه بارگذاری نمایید و در اغلب شرایط بیشتر این تصاویر در یک زمان در صفحه نمایش داده نمی شوند. مصرف حافظه با چنین اجزایی پایین نگه داشته می شود و این کار از طریق ریسایکلینگ ویوهای فرزند هنگامی که به خارج از صفحه منتقل می شوند صورت می پذیرد. گاربیج کالکتور نیز با این تصور که شما هیچ رفرنس طولانی مدتی را نگه نمی دارید بیت مپ های بارگذاری شده را آزاد می کند. به منظور حفظ نرمی و روان بودن و سرعت بارگذاری بالای رابط کاربری، باید از پردازش مستمر این تصاویر با هر برگشت به صفحه خودداری کنید. حافظه و کش دیسک اغلب در این شرایط به کمک شما می آیند و امکان بارگذاری سریع تر عکس هایی را که از قبل پردازش شده اند، در اختیار شما قرار می دهند.

در مطلب بعدی سایر قوانین حاکم در توسعه اپلیکیشن های اندروید را به بحث خواهیم گذاشت، با ما همراه باشید.

 

https://www.codementor.io برگرفته از

اینها را هم بخوانید

نظرات کاربران

  1. avatar
    ali
    سلام زیبا بود ممنون.

    به این نظر پاسخ دهید