خیلی وقت بود در مورد dagger2 (دگر۲) چیزی نخونده بودم تا اینکه دوباره فرصت شد مقالههای جدیدی بخونم و ۳ تا نکتهی جدید ازشون یاد بگیرم. این سه نکته رو در قالب دو پُست بلاگ توضیح میدم. برای اینکه کاربردشون رو بهتر نشون بدم، هر نکته رو در قالب یک کامیت روی پروژهی SearchMovies اعمال کردم.
چند وقت پیش در بلاگم پستی با تیتر “سوالات متداول توسعهدهندگان تازه کار اندروید” نوشتم. سوال ۸ام اون پست “چطور میشه برنامهنویسی اندروید رو یاد گرفت؟” بود که جوابشو بصورت خلاصه نوشته بودم. این مقاله درواقع جواب کامل اون سوال هست و داخلش منابعی رو که خودم در سه سال گذشته ازشون استفاده کردم و برنامهنویسی اندروید یاد گرفتم رو بهتون معرفی میکنم. در طول این سه سال گذشته در هیچ شرکت یا تیم اندرویدی نبودم و فقط از منابع داخل این پست برای یادگیری اندروید استفاده کردم. در ادامه میتونید با این منابع و روشی که ازشون استفاده میکنم آشنا بشید.
برای یادگرفتن برنامهنویسی روشهای گوناگونی هست، مثلا میشه توی کلاسهای حضوری و مجازی ثبتنام کرد یا بصورت خودخوان (self study) از منابع موجود در اینترنت استفاده کرد. اینکه کدوم روش برای شما مناسبه، بستگی به روحیات و سلیقتون داره. توی این پست قراره در رابطه با این صحبت کنیم که هر روش برای چه افرادی مناسبتر هست. چیزایی که در ادامه مینویسم چکیدهی تجربهام از تعامل با برنامهنویسان تازهکار توی گروههای تلگرامی، فرومها و کسایی که خصوصی بهشون درس دادم هست. منظورم اینه پشتوانهی علمی نداره و فقط نظر تجربی و شخصیم هست.
شخصا برام درست کردن رابط کاربری خوشگل خیلی خیلی سخت هست. جدای اینکه بهترین کار اینه کسی باشه و بهش بگید براتون طرح کار رو بکشه😃 بعضی وقتا مجبورید خودتون اینکارو بکنید. در این مواقع یکی از راهها اینه که از کارهای بقیه الگو بگیرید. امروز لیستی از سایتهایی که توی این راه بهتون کمک میکنند رو معرفی میکنم. ادامه …
توو این پست میخوام جواب سوالات متداولی که توی گروههای تلگرام یا بصورت خصوصی از خودم خیلی پرسیده میشه رو بدم. خوبی اینجا نسبت به تلگرام اینه که این جوابها همیشه در دسترس هست و زیر بقیه پیامهای گروه گم نمیشند. تقریبا نفراتی که تازه با اندروید آشنا میشند، سوالات مشابهی در ذهنشون درست میشه. این سوالات و جوابهاشون رو در ادامه بخونید. ادامه …
گوگل توی همایش IO امسال ORM خودشو به اسم Room برای اندروید معرفی کرد. این ORM یه قسمت از پازل Architecture Components هست که شامل LiveData , ViewModel و … میشه. در ادامه نحوهی استفاده شو توضیح میدم. ادامه …
آدم هر چقدر از مظلومیت برنامهنویسای اندروید بگه، کم گفته. حداقل یک روز کامل درگیر این بودم که چرا اکتیویتی پخش کنندهی ویدیو توو برنامهام، موقع چرخش گوشی دوباره از اول ساخته میشه😐. وقتی مشکل رو حل کردم، به سه دلیل تصمیم گرفتم که داستانش رو کامل بنویسم: ۱- با گفتنِ رنجی که کشیدم، آرومتر بشم😃 ۲- شاید به برنامهنویسهای تازهکار کمک کنه که در مواجهه با مشکلات چیکار کنند ۳- اگر در آینده کسی همین مشکل منو داشت، بتونه با خوندن این پست درستش کنه.
همینطور که از عنوان پست معلومه، اسم جنریتور حِلما هست و نسخهی ۰٫۰٫۱ با نام generator-helma-mvp در npm منتشر شده. پروژه opensource هست و سورسش رو هم توی گیتهابم گذاشتم:
https://github.com/abbas-oveissi/generator-helma-mvp
اول تصمیمم این بود که تا مدت زیادی خودم استفاده کنم و بعد که دیگه هیچ مشکلی نداشت، منتشرش کنم. ولی بعد نظرم عوض شد، چون الان اگه کسی دوست داشت میتونه از روی سورس برای خودش جنریتور دیگهای درست کنه و یا حتی توی همین پروژه همکاری کنه. مورد دوم رو در بخش همکاری بیشتر توضیح میدم. ادامه …
وقتی برنامهنویسی اندروید رو تازه شروع کرده بودم، برای انجام پروژهها از گزینهی new project اندروید استودیو استفاده میکردم. بعد از مدتی احساس کردم که اینجوری زمان زیادی رو الکی هدر میدم، چون موقع شروع هر پروژه باید کارهای تکراری زیادی مثل اضافه کردن dependencyها، تغییر فایل build.gradle، کپی کردن کلاسهای کمکی مثل تاریخ شمسی و … رو انجام میدادم.
برای حل این مشکل، یک پروژه ساختم و همهی کارهای مقدماتی رو داخلش انجام دادم. در ادامه از این پروژه به عنوان پایهی پروژههای جدید بعدی استفاده میکردم. یعنی ازش یک نسخه کپی میگرفتم و اسامی داخل پروژه مثل package name رو عوض میکردم. این روش دو تا ضعف داشت:
- خود این راهحل زمانگیر بود و باید اسامی رو همه جای پروژه تغییر داد.
- گاهی پیش میاد یکی دو جا از دست آدم در بره و همهی اسامی درست تغییر نکنند که باعث میشه اپ کرش کنه و نیاز به عیبیابی داشته باشه.
تقریبا ۶ ماهی از نوشتن قسمت قبلی این پست میگذره. تو این مدت مثالهای مختلفی از پیاده سازی معماری MVP توی اندروید رو بررسی کردم و با دیدن روش بقیهی دولوپرها تغییراتی رو روی مثال MVPم در گیت هاب دادم. توی این پست به صورت خلاصه تغییرات و دلیلهاش رو براتون توضیح میدم. اینجوری هم شما میتونید راحتتر سورس پروژه رو بررسی کنید و هم اگه نظری در مورد دلیل تصیمیماتم داشتید، میتونید توی نظرات بنویسید.
اولین تغییری که با باز کردن سورس پروژه حتما متوجه میشید، اضافه شدن پکیچهای جدید به اسم di و interactors و pojos به پروژه هست. به ترتیب دلیل اضافه شدن و کارشون رو میگم. ادامه …