Forwarded from | Codilo |
🍉 یلدای امسال رو کُدیلویی بگذرونید!
🍓 تا پایان روز جمعه با دعوت دو کاربر جدید به کدیلو، فایل های کدیلو رو رایگان دریافت کنید
🥝 یلدای خوبی داشته باشید (:
💎 @Codilo
🍓 تا پایان روز جمعه با دعوت دو کاربر جدید به کدیلو، فایل های کدیلو رو رایگان دریافت کنید
🥝 یلدای خوبی داشته باشید (:
💎 @Codilo
👍2
#ویس
داخل این هشتگ سعی دارم یه سری ویس بگیرم به صورت کلی بپردازیم به مسائل مربوط به اندروید،و فارق از آموزش تخصصی شامل : سوالای شما ، تجربه خودم و...
این چهارمین ویس از این سری بود
احتمالا مشکلاتی داره پس با نظراتتون ما رو در بهتر کردنش همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- مد سازی داخل اندروید!
- اسمالی پچینگ داخل اندروید به چه شکله؟
- برنامه ها به صورت کلی چه جوری مد میشن؟
- به چه شکل امنیت برنامه خودمو بالا ببرم؟
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
داخل این هشتگ سعی دارم یه سری ویس بگیرم به صورت کلی بپردازیم به مسائل مربوط به اندروید،و فارق از آموزش تخصصی شامل : سوالای شما ، تجربه خودم و...
این چهارمین ویس از این سری بود
احتمالا مشکلاتی داره پس با نظراتتون ما رو در بهتر کردنش همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- مد سازی داخل اندروید!
- اسمالی پچینگ داخل اندروید به چه شکله؟
- برنامه ها به صورت کلی چه جوری مد میشن؟
- به چه شکل امنیت برنامه خودمو بالا ببرم؟
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
👍9
#ویس
داخل این هشتگ سعی دارم یه سری ویس بگیرم به صورت کلی بپردازیم به مسائل مربوط به اندروید،و فارق از آموزش تخصصی شامل : سوالای شما ، تجربه خودم و...
این پنجمین ویس از این سری بود
احتمالا مشکلاتی داره پس با نظراتتون ما رو در بهتر کردنش همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- معرفی ویوگروپ constraint layout
- چجوری بسازمیش؟
- چه قابلیت هایی بهمون میده؟
- چرا باید ازش استفاده کنم!؟
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
داخل این هشتگ سعی دارم یه سری ویس بگیرم به صورت کلی بپردازیم به مسائل مربوط به اندروید،و فارق از آموزش تخصصی شامل : سوالای شما ، تجربه خودم و...
این پنجمین ویس از این سری بود
احتمالا مشکلاتی داره پس با نظراتتون ما رو در بهتر کردنش همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- معرفی ویوگروپ constraint layout
- چجوری بسازمیش؟
- چه قابلیت هایی بهمون میده؟
- چرا باید ازش استفاده کنم!؟
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
👍8👎1
#ویس
این نهمین ویس از این سری ایست، با نظراتتون ما رو در بهتر کردن این ویس ها همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- چگونه برنامه نویسی اندروید رو شروع کنم؟
- از کجا شروع کنم؟
- چجوری شروع کنم؟
- با چه زبانی کار کنم؟
- چجوری آموزش ببینم؟
- چه معیار هاییو برای انتخاب زبان در نظر بگیرم؟
- اساس انتخاب یه دوره آموزشی خوب چیه؟
- از کجا سرفصل خوب پیدا کنم!
- اگه پول دوره نداشته باشم چی؟
- اگه نخوام دوره آموزشی تهیه کنم چی؟
- و کلا نقشه اول کار!
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
این نهمین ویس از این سری ایست، با نظراتتون ما رو در بهتر کردن این ویس ها همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- چگونه برنامه نویسی اندروید رو شروع کنم؟
- از کجا شروع کنم؟
- چجوری شروع کنم؟
- با چه زبانی کار کنم؟
- چجوری آموزش ببینم؟
- چه معیار هاییو برای انتخاب زبان در نظر بگیرم؟
- اساس انتخاب یه دوره آموزشی خوب چیه؟
- از کجا سرفصل خوب پیدا کنم!
- اگه پول دوره نداشته باشم چی؟
- اگه نخوام دوره آموزشی تهیه کنم چی؟
- و کلا نقشه اول کار!
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
❤11👍3
#ویس
این دهمین ویس از این سری ایست، با نظراتتون ما رو در بهتر کردن این ویس ها همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- دانشگاه بریم؟
- شهر خومون یا شهر دیگه؟
- کنکور فنی چه جوریه؟
- برم دانشگاه تمومه؟
- چرا برم دانشگاه؟
- مهارت یا مدرک؟
- ازاد؟دولتی؟کدوم؟
- و...
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
این دهمین ویس از این سری ایست، با نظراتتون ما رو در بهتر کردن این ویس ها همراهی کنید❤️
➖➖➖
در مورد چی صحبت شد :
- دانشگاه بریم؟
- شهر خومون یا شهر دیگه؟
- کنکور فنی چه جوریه؟
- برم دانشگاه تمومه؟
- چرا برم دانشگاه؟
- مهارت یا مدرک؟
- ازاد؟دولتی؟کدوم؟
- و...
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
👍7
Forwarded from Developix Support
🔴 شتابان هاست 🔴
🔰 تخفیف ویژه 12 درصدی برای
خرید انواع🔹هاست🔹سرور
در شتابان هاست به مناسبت فرا رسیدن عید نوروز 🥳:
✅ https://shetabanhost.com/
🌟 کد تخفیف اختصاصی:
🔗 https://shetabanhost.com/
🌐 پشتیبانی ۲۴ ساعته شتابان هاست👇👇
☎️ 024-91311031
💎 Channel: @shetabanhostcom
🔰 تخفیف ویژه 12 درصدی برای
خرید انواع🔹هاست🔹سرور
در شتابان هاست به مناسبت فرا رسیدن عید نوروز 🥳:
✅ https://shetabanhost.com/
🌟 کد تخفیف اختصاصی:
shetabanhost
🔗 https://shetabanhost.com/
🌐 پشتیبانی ۲۴ ساعته شتابان هاست👇👇
☎️ 024-91311031
💎 Channel: @shetabanhostcom
❤32👍25🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
تغییر ظاهر اندروید استودیو
در نسخه جدید اندروید استودیو شاهد ظاهری جدید برای این محیط هستیم
در این آموزش شما یادمیگیرین که به چه شکل میتونین بین ظاهر قدیم و جدید سوییچ کنید
#محتوای_آموزشی
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
در نسخه جدید اندروید استودیو شاهد ظاهری جدید برای این محیط هستیم
در این آموزش شما یادمیگیرین که به چه شکل میتونین بین ظاهر قدیم و جدید سوییچ کنید
#محتوای_آموزشی
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
👍10👎2
Forwarded from Developix Support
🔴رویداد نوآوری در کارتخوانهای اندرویدی فناپتک (آنلاین)
⭕️ مخاطبان:
🔹استارتآپها، برنامهنویسان، اصناف، استفادهکنندگان از دستگاههای کارتخوان و سایر علاقهمندان
⭕️ با هدف مشارکت مخاطبان برای:
🔹پیادهسازی ایدههای کاربردی
🔹توسعه اپلیکیشنهای اندرویدی مبتنی بر کارتخوان بانکی
🗓چهارشنبه ۱۶ اسفندماه ۱۴۰۲
⏰ساعت ۱۰ تا ۱۳
💻به صورت آنلاین (پخش بر بستر آپارات)
ثبتنام از طریق وبسایت رسمی رویداد:
innoposchallenge.ir
اطلاعات بیشتر(بومرنگ):
۰۲۱۶۶۵۳۹۷۳۴
۰۲۱۶۶۵۳۵۷۷۹
۰۹۳۶۰۱۳۵۷۰۷
⭕️ مخاطبان:
🔹استارتآپها، برنامهنویسان، اصناف، استفادهکنندگان از دستگاههای کارتخوان و سایر علاقهمندان
⭕️ با هدف مشارکت مخاطبان برای:
🔹پیادهسازی ایدههای کاربردی
🔹توسعه اپلیکیشنهای اندرویدی مبتنی بر کارتخوان بانکی
🗓چهارشنبه ۱۶ اسفندماه ۱۴۰۲
⏰ساعت ۱۰ تا ۱۳
💻به صورت آنلاین (پخش بر بستر آپارات)
ثبتنام از طریق وبسایت رسمی رویداد:
innoposchallenge.ir
اطلاعات بیشتر(بومرنگ):
۰۲۱۶۶۵۳۹۷۳۴
۰۲۱۶۶۵۳۵۷۷۹
۰۹۳۶۰۱۳۵۷۰۷
👍3
Media is too big
VIEW IN TELEGRAM
💢 آموزش کاربردی
چگونه به بهترین شکل باگی که بهش برخوردیم رو به برنامهنویسهای دیگر بگیم، چگونه مطرحش کنیم که به راحتی به جواب برسیم
#محتوای_آموزشی
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
چگونه به بهترین شکل باگی که بهش برخوردیم رو به برنامهنویسهای دیگر بگیم، چگونه مطرحش کنیم که به راحتی به جواب برسیم
#محتوای_آموزشی
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
👍10❤1🔥1
مخزنی در گیتهاب با 1700 لوگو با فرمت XML
مورد استفاده در ریسورسهای برنامهنویسی اندروید
کافی است که انتخاب کنید و فقط به بخش ریسورسهاتون اضافه کنید و تمام. به همین سادگی!
https://github.com/AblRadmanesh/VectorAsset
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
مورد استفاده در ریسورسهای برنامهنویسی اندروید
کافی است که انتخاب کنید و فقط به بخش ریسورسهاتون اضافه کنید و تمام. به همین سادگی!
https://github.com/AblRadmanesh/VectorAsset
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
👍12
This media is not supported in your browser
VIEW IN TELEGRAM
💎 Channel: @DevelopixAndroid
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
Forwarded from | کانال توسعهدهندگان وب |
پلتفرم Rive انیمیشنهایی دراختیارتون قرار میده که توی تمام پلتفرمها قابلیت استفادهش رو دارید و خاصیتش هم این هست که قابلیت کنترل کردن انیمیشنها بهتون داده میشه.
برای همین میشه برای ساخت صفحات پویاتر، بازی یا هرچیزی ازش استفاده کرد.
اپ Duolingo هم بهنظر میاد از همین پلفترم برای کنترل شخصیتها و المانهای داخل برنامهاش استفاده میکنه.
🔗 Rive.app
بعضی از موردهای استفادهاش رو هم میتونید توی این لینک ببینید.
🔖 #UI #Animation #Crossplatform
👤 Mahdiyar
💎 Channel: @DevelopixWeb
برای همین میشه برای ساخت صفحات پویاتر، بازی یا هرچیزی ازش استفاده کرد.
اپ Duolingo هم بهنظر میاد از همین پلفترم برای کنترل شخصیتها و المانهای داخل برنامهاش استفاده میکنه.
🔗 Rive.app
بعضی از موردهای استفادهاش رو هم میتونید توی این لینک ببینید.
🔖 #UI #Animation #Crossplatform
👤 Mahdiyar
💎 Channel: @DevelopixWeb
👍6
دانلود اندروید استودیو نسخه Koala | 2024.1.1 RC | اندروید استودیو نسخه کوآلا
لینک دسترسی به ورژن های مختلف بدون مشکل فیلترینگ و تحریم ، کلیک کنید
توضیحات :
این نسخه، آخرین نسخه پایدار است اما هنوز در سایت رسمی اندروید در صفحه اولیه دانلود موجود نیس.
🔖 #Android, #اندروید, #AndroidStudio
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
Mac
Windows
ChromeOS
Linux
لینک دسترسی به ورژن های مختلف بدون مشکل فیلترینگ و تحریم ، کلیک کنید
توضیحات :
این نسخه، آخرین نسخه پایدار است اما هنوز در سایت رسمی اندروید در صفحه اولیه دانلود موجود نیس.
🔖 #Android, #اندروید, #AndroidStudio
👤 Abolfazl Radmanesh
💎 Channel: @DevelopixAndroid
👍6👎3
💢 کتابخانه ZXing
امروزه استفاده از بارکدها برای به دست آوردن اطلاعات محصول و سایر مشخصهها و ... خیلی رایج شده است، برای ایجاد بارکدخوان در اندروید میتوان از کتابخانه ZXing استفاده کرد.
کتابخانه ZXing یک کتابخانه بارکدخوان (Barcode Scanner) برای جاوا و اندروید میباشد که میتواند بارکدهای نوع 1D/2D را پردازش کند.
برای استفاده از این کتابخانه باید ورژن AppCompat بالای 23 و ورژن BuildTools بالای 27.0.3 باشد، در غیر این صورت ممکن است با خطای کامپایل مواجه شوید و همچنین داخل فایل Manifest نیز برای عملکرد بهتر باید ویژگی HardwareAccelerated را در بخش Application بر روی True تنظیم کنید.
🔖 #Android, #اندروید
👤 Maryam
💎 Channel: @DevelopixAndroid
امروزه استفاده از بارکدها برای به دست آوردن اطلاعات محصول و سایر مشخصهها و ... خیلی رایج شده است، برای ایجاد بارکدخوان در اندروید میتوان از کتابخانه ZXing استفاده کرد.
کتابخانه ZXing یک کتابخانه بارکدخوان (Barcode Scanner) برای جاوا و اندروید میباشد که میتواند بارکدهای نوع 1D/2D را پردازش کند.
برای استفاده از این کتابخانه باید ورژن AppCompat بالای 23 و ورژن BuildTools بالای 27.0.3 باشد، در غیر این صورت ممکن است با خطای کامپایل مواجه شوید و همچنین داخل فایل Manifest نیز برای عملکرد بهتر باید ویژگی HardwareAccelerated را در بخش Application بر روی True تنظیم کنید.
🔖 #Android, #اندروید
👤 Maryam
💎 Channel: @DevelopixAndroid
👍11
دور زدن محدودیت های اندروید استودیو
آموزش نصب اندروید استودیو
آشنایی با محیط اندروید استودیو (مقدماتی)
معرفی پلاگین
آموزشات روزانه
معرفی تا پیاده سازی کتابخانه ها
Please open Telegram to view this post
VIEW IN TELEGRAM
👍270
رفع خطای Google Play Protect (سپر امنیتی گوگل)
وقتی اپلیکیشن رو بهصورت فایل APK میسازیم و قصد نصبش رو داریم، ممکنه با خطایی به اسم Google Play Protect روبه رو بشیم. این سپر امنیتی گوگل طراحی شده تا جلوی نصب بدافزارها و برنامه های مشکوک رو بگیره. به همین دلیل وقتی این خطا ظاهر میشه، دیگه نمیشه اپ رو توی مارکت هایی مثل گوگل پلی، کافه بازار یا مایکت منتشر کرد.
برای رفع این ارور لازم هست یه فرم به گوگل بفرستیم تا بررسی کنن و اگه مشکلی نباشه، تاییدش کنن. این کار یه روند مشخص داره که خیلی سخت نیست.
اول از همه باید VPN یا هر ابزار تغییر IP روشن کنید تا به صفحه مربوطه دسترسی داشته باشید. بعد وارد این لینک بشید:
https://support.google.com/googleplay/android-developer/contact/protectappeals
تو بخشی که باز میشه، یه فرم هست که باید پرش کنید. توی قسمت اول ایمیل خودتون رو وارد میکنید و تو قسمت بعدی اسم خودتون یا تیم توسعه دهندتون رو مینویسید. بعد از اون باید package name اپلیکیشن رو ثبت کنید.
حالا لازمه وارد سایت VirusTotal بشید و فایل APK اپ تون رو اونجا آپلود کنید. بعد از اینکه آپلود تموم شد، یه کد ۶۴ کاراکتری به اسم SHA256 بهتون میده که باید اون رو از سایت کپی کنید و تو فرم گوگل جای مخصوصش قرار بدید.
توی بخش آخر هم باید یه توضیح کوتاه به زبان انگلیسی درباره این بنویسید که اپلیکیشن چه کاری انجام میده. وقتی همه چی تکمیل شد روی دکمه Submit کلیک کنید.
بعد از ارسال فرم، یه پیام ظاهر میشه که نوشته:
All appeal decisions are final and you will not receive a response. Note that we will not provide guidance on the potential compliance of your future implementation, so submissions requesting advice will not receive an answer.
این یعنی همه چیز درسته. از اینجا به بعد باید منتظر بمونید تا گوگل بررسی کنه. این فرآیند حدود ۷ روز کاری طول میکشه.
🔖 #Android, #اندروید
👤 𝐏𝐫𝐨𝐠𝐫𝐚𝐦𝐦𝐞𝐫
💎 Channel: @DevelopixAndroid
وقتی اپلیکیشن رو بهصورت فایل APK میسازیم و قصد نصبش رو داریم، ممکنه با خطایی به اسم Google Play Protect روبه رو بشیم. این سپر امنیتی گوگل طراحی شده تا جلوی نصب بدافزارها و برنامه های مشکوک رو بگیره. به همین دلیل وقتی این خطا ظاهر میشه، دیگه نمیشه اپ رو توی مارکت هایی مثل گوگل پلی، کافه بازار یا مایکت منتشر کرد.
برای رفع این ارور لازم هست یه فرم به گوگل بفرستیم تا بررسی کنن و اگه مشکلی نباشه، تاییدش کنن. این کار یه روند مشخص داره که خیلی سخت نیست.
اول از همه باید VPN یا هر ابزار تغییر IP روشن کنید تا به صفحه مربوطه دسترسی داشته باشید. بعد وارد این لینک بشید:
https://support.google.com/googleplay/android-developer/contact/protectappeals
تو بخشی که باز میشه، یه فرم هست که باید پرش کنید. توی قسمت اول ایمیل خودتون رو وارد میکنید و تو قسمت بعدی اسم خودتون یا تیم توسعه دهندتون رو مینویسید. بعد از اون باید package name اپلیکیشن رو ثبت کنید.
حالا لازمه وارد سایت VirusTotal بشید و فایل APK اپ تون رو اونجا آپلود کنید. بعد از اینکه آپلود تموم شد، یه کد ۶۴ کاراکتری به اسم SHA256 بهتون میده که باید اون رو از سایت کپی کنید و تو فرم گوگل جای مخصوصش قرار بدید.
توی بخش آخر هم باید یه توضیح کوتاه به زبان انگلیسی درباره این بنویسید که اپلیکیشن چه کاری انجام میده. وقتی همه چی تکمیل شد روی دکمه Submit کلیک کنید.
بعد از ارسال فرم، یه پیام ظاهر میشه که نوشته:
All appeal decisions are final and you will not receive a response. Note that we will not provide guidance on the potential compliance of your future implementation, so submissions requesting advice will not receive an answer.
این یعنی همه چیز درسته. از اینجا به بعد باید منتظر بمونید تا گوگل بررسی کنه. این فرآیند حدود ۷ روز کاری طول میکشه.
🔖 #Android, #اندروید
👤 𝐏𝐫𝐨𝐠𝐫𝐚𝐦𝐦𝐞𝐫
💎 Channel: @DevelopixAndroid
👍15❤3
پرداخت درونبرنامهایِ کافهبازار و مایکت
• کافهبازار
اگر اپلیکیشنی توسعه دادید که نیاز به پرداخت درونبرنامهای داره، چه برای فروش آیتم، اشتراک یا اعتبار و... کافهبازار براتون این سرویس رو ارائه کرده.
سرویس پرداخت درونبرنامهای بازار، با ساختار پولکی کار میکنه و از پلتفرم و زبانهای مختلفی مثل Java, React Native, Unity و Flutter پشتیبانی میکنه.
🔗 آشنایی با ساختار
راهنماها:
🔗 پولکی
🔗 پولکی B4A
🔗 پولکی یونیتی
🔗 پولکی ریاکت نیتیو
🔗 پولکی فلاتر
🔗 جاوا
• مایکت
مایکت هم زیرساخت کامل پرداخت درونبرنامهای ارائه داده که میتونید از طریق API یا کتابخانههای موجود، اون رو در اپلیکیشنتون پیادهسازی کنید.
مستندات:
🔗 پرداخت درونبرنامهای مایکت
میتونید برای اطلاعات بیشتر، به سایر مستندات رسمی نیز مراجعه کنید.
🔖 #Android, #اندروید
👤 𝐏𝐫𝐨𝐠𝐫𝐚𝐦𝐦̷𝐞̷𝐫̷
💎 Channel: @DevelopixAndroid
• کافهبازار
اگر اپلیکیشنی توسعه دادید که نیاز به پرداخت درونبرنامهای داره، چه برای فروش آیتم، اشتراک یا اعتبار و... کافهبازار براتون این سرویس رو ارائه کرده.
سرویس پرداخت درونبرنامهای بازار، با ساختار پولکی کار میکنه و از پلتفرم و زبانهای مختلفی مثل Java, React Native, Unity و Flutter پشتیبانی میکنه.
🔗 آشنایی با ساختار
راهنماها:
🔗 پولکی
🔗 پولکی B4A
🔗 پولکی یونیتی
🔗 پولکی ریاکت نیتیو
🔗 پولکی فلاتر
🔗 جاوا
• مایکت
مایکت هم زیرساخت کامل پرداخت درونبرنامهای ارائه داده که میتونید از طریق API یا کتابخانههای موجود، اون رو در اپلیکیشنتون پیادهسازی کنید.
مستندات:
🔗 پرداخت درونبرنامهای مایکت
میتونید برای اطلاعات بیشتر، به سایر مستندات رسمی نیز مراجعه کنید.
🔖 #Android, #اندروید
👤 𝐏𝐫𝐨𝐠𝐫𝐚𝐦𝐦̷𝐞̷𝐫̷
💎 Channel: @DevelopixAndroid
❤7
کوچکسازی ViewModel با Use Case — رعایت SRP در Clean Architecture
وقتی ViewModel همه منطق کسبوکار، دسترسی به داده و تبدیل مقادیر را در خود جای میدهد، سریعاً تبدیل به یک کلاس بزرگ و سختتست میشود. یک راه ساده، استخراج منطق به لایهٔ Use Case (یا Interactor) است تا Single Responsibility Principle (SRP) را رعایت کنیم و تستپذیری و خوانایی را بالا ببریم.
نکات عملی:
- ViewModel فقط مسئول مدیریت وضعیت UI و فراخوانی Use Caseها باشد.
- Use Caseها منطق کسبوکار را اجرا کنند و به repository وابسته باشند.
- این جداسازی باعث میشود تست واحد (unit test) روی Use Caseها و ViewModel بهصورت مجزا آسان شود.
مثال کوچک با Hilt، Coroutines و StateFlow:
چرا این بهتر است؟
- تست: میتوان GetUserUseCase را با یک Fake Repository و ViewModel را با یک Fake UseCase تست کرد.
- تغییرپذیری: اگر منبع داده عوض شود، فقط Repository یا Use Case تغییر میکند، نه ViewModel.
- قابل فهمتر: هر کلاس وظیفهٔ مشخصی دارد.
برای مرجعی کاربردی به مستندات Jetpack نگاه کنید: Android Jetpack Guide
این الگو کوچک و کاربردی است اما تأثیر زیادی در نگهداری و مقیاسپذیری اپلیکیشنهای اندروید دارد. رعایت SRP و تفکیک لایهها، بهویژه در اپهای بزرگ، تفاوت چشمگیری ایجاد میکند.
🔖 #Android #اندروید #Android #CleanArchitecture #MVVM #UseCase #Hilt #Kotlin #StateFlow #SOLID
👤 Developix
💎 Channel: @DevelopixAndroid
وقتی ViewModel همه منطق کسبوکار، دسترسی به داده و تبدیل مقادیر را در خود جای میدهد، سریعاً تبدیل به یک کلاس بزرگ و سختتست میشود. یک راه ساده، استخراج منطق به لایهٔ Use Case (یا Interactor) است تا Single Responsibility Principle (SRP) را رعایت کنیم و تستپذیری و خوانایی را بالا ببریم.
نکات عملی:
- ViewModel فقط مسئول مدیریت وضعیت UI و فراخوانی Use Caseها باشد.
- Use Caseها منطق کسبوکار را اجرا کنند و به repository وابسته باشند.
- این جداسازی باعث میشود تست واحد (unit test) روی Use Caseها و ViewModel بهصورت مجزا آسان شود.
مثال کوچک با Hilt، Coroutines و StateFlow:
interface UserRepository {
suspend fun getUser(id: String): User
}
class GetUserUseCase(private val repo: UserRepository) {
suspend operator fun invoke(id: String): User = repo.getUser(id)
}
@HiltViewModel
class UserViewModel @Inject constructor(
private val getUserUseCase: GetUserUseCase
) : ViewModel() {
private val _uiState = MutableStateFlow<User?>(null)
val uiState: StateFlow<User?> = _uiState
fun load(id: String) {
viewModelScope.launch {
val user = getUserUseCase(id)
_uiState.value = user
}
}
}چرا این بهتر است؟
- تست: میتوان GetUserUseCase را با یک Fake Repository و ViewModel را با یک Fake UseCase تست کرد.
- تغییرپذیری: اگر منبع داده عوض شود، فقط Repository یا Use Case تغییر میکند، نه ViewModel.
- قابل فهمتر: هر کلاس وظیفهٔ مشخصی دارد.
برای مرجعی کاربردی به مستندات Jetpack نگاه کنید: Android Jetpack Guide
این الگو کوچک و کاربردی است اما تأثیر زیادی در نگهداری و مقیاسپذیری اپلیکیشنهای اندروید دارد. رعایت SRP و تفکیک لایهها، بهویژه در اپهای بزرگ، تفاوت چشمگیری ایجاد میکند.
🔖 #Android #اندروید #Android #CleanArchitecture #MVVM #UseCase #Hilt #Kotlin #StateFlow #SOLID
👤 Developix
💎 Channel: @DevelopixAndroid
👍5
Retrofit از Square: کتابخانهای ساده و قدرتمند برای ارتباط با API در اپهای اندروید. حلِ چه چیزی؟ کم کردن boilerplateِ درخواست HTTP، تبدیل خودکار JSON به مدلها و پشتیبانی مستقیم از coroutines برای کد تمیز و همزمانی بهتر. 🚀
ویژگیها و مزایا:
- 🔹 تبدیلکنندههای قابلِ اضافه (Gson/Moshi)
- 🔹 ادغامِ روان با OkHttp، زمانبندی و کش
- 🔹 پشتیبانی از suspend برای خوانایی و مدیریت خطا
- 🔹 تستپذیری بالا و قرارداد محور
نمونه استفاده (Kotlin):
موارد عملی: استفاده در رپوزیتوری برای MVVM، پیادهسازی paging، یا ترکیب با WorkManager برای همگامسازی پسزمینه. یک نکته کوچک: زمانبندی و retry را در OkHttp اعمال کنید تا از درخواستهای اضافی جلوگیری شود. 🔧
اسناد رسمی و مخزن:
Docs • GitHub
امتحان کنید و تجربهتان را به اشتراک بگذارید — میتواند کد شبکهتان را خیلی مرتبتر کند! ✨
🔖 #Android #اندروید #Retrofit #Android #Networking #Kotlin
👤 Developix
💎 Channel: @DevelopixAndroid
ویژگیها و مزایا:
- 🔹 تبدیلکنندههای قابلِ اضافه (Gson/Moshi)
- 🔹 ادغامِ روان با OkHttp، زمانبندی و کش
- 🔹 پشتیبانی از suspend برای خوانایی و مدیریت خطا
- 🔹 تستپذیری بالا و قرارداد محور
نمونه استفاده (Kotlin):
data class User(val id: Int, val name: String)
interface ApiService {
@GET("users/{id}")
suspend fun getUser(@Path("id") id: Int): User
}
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.client(OkHttpClient())
.build()
val api = retrofit.create(ApiService::class.java)
val user = api.getUser(1)
موارد عملی: استفاده در رپوزیتوری برای MVVM، پیادهسازی paging، یا ترکیب با WorkManager برای همگامسازی پسزمینه. یک نکته کوچک: زمانبندی و retry را در OkHttp اعمال کنید تا از درخواستهای اضافی جلوگیری شود. 🔧
اسناد رسمی و مخزن:
Docs • GitHub
امتحان کنید و تجربهتان را به اشتراک بگذارید — میتواند کد شبکهتان را خیلی مرتبتر کند! ✨
🔖 #Android #اندروید #Retrofit #Android #Networking #Kotlin
👤 Developix
💎 Channel: @DevelopixAndroid
در نمونهکد بالا برای جمعآوری داده از چند منبع در ViewModel، بهجای استفاده از GlobalScope.launch و async/await داخل
🔖 #Android #اندروید
👤 Developix
💎 Channel: @DevelopixAndroid
onCleared() (که میتواند باعث Memory Leak، کرش و رفتار غیرقابل پیشبینی شود)، میتوانید از viewModelScope و combine در Flow استفاده کنید تا هم چرخهعمر (Lifecycle) بهدرستی مدیریت شود و هم کارایی و خوانایی کد در شرایط بارگذاری همزمان چند منبع داده افزایش پیدا کند.🔖 #Android #اندروید
👤 Developix
💎 Channel: @DevelopixAndroid
❤6