آموزش پروژه‌محور Retrofit و LiveData در اندروید

مدرس: امیرحسین عبدالله زاده

با سلامی دیگر. من امیرحسین هستم و با دوره آموزش پروژه‌محور Retrofit و LiveData‌ در اندروید در خدمت شما عزیزان هستم.

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

کتابخانه‌های زیادی برای بحث Networking و Rest API در اندروید وجود داره اما بدون هیچ شک و تردیدی می‌تونیم بگیم این روزها Retrofit حرف اول رو میزنه و بیشترین جامعه کاربری رو به خودش اختصاص داده. من شخصا زمانی که بحث Web Service در اندروید رو آغاز کردم اوایل به صورت مستقیم با HttpURLConnection و AsyncTask کار می‌کردم و زمانی که تصمیم گرفتم برای این کار با High-Level-Libraryها کار کنم رفتم سراغ Volley و تقریبا 6 ماه با Volley کار کردم و نهایتا به Retrofit‌ سوئیچ کردم و در دو سال و نیم گذشته در تمامی کارهام از Retrofit‌ استفاده کردم.

ویژگی‌های مهم دوره آموزش پروژه‌محور Retrofit و LiveData در اندروید

  1. همانطور که از نام دوره پیداست این دوره به صورت پروژه‌محور آموزش داده شده و پروژه‌ای که ما در نظر داریم یک اپلیکیشن Note هست که در این اپلیکیشن می‌تونیم یک یادداشت جدید ایجاد کنیم، لیست یادداشت‌ها رو مشاهده کنیم، یادداشت‌ها رو ویرایش و حذف کنیم و همچنین جستجو کنیم و هر یادداشت هم می‌تونه چندین دسته‌بندی داشته باشه.
  2. طبیعتا جهت تست API به یک برنامه سمت سرور نیاز داریم. من این برنامه رو با Spring Boot نوشتم و جهت راحتی کارتان سورس آن را در گیتهاب برایتان قرار دادم و همچنین نحوه اجرای برنامه‌ سمت سرور رو هم در یکی از اپیزودها آموزش دادم.
  3. در این دوره در کنار Retrofit از LiveData هم استفاده شده. LiveData‌ یکی از کامپوننت‌های Android Architecture Components محسوب میشه و یک Data Holder Class هست که از دیزاین پترن Observer تبعیت می‌کنه و کاربردهای بسیار زیادی می‌تونه برامون داشته باشه.
  4. در این دوره سعی من بر این بوده که طبق یک پترن و معماری تمیز کدنویسی کنیم. معماری مدنظر من MVVM بوده اما از اونجایی که اگر بخوایم به صورت کامل این معماری رو پیاده‌سازی کنیم از ما زمان زیادی می‌گیره و از طرفی بیشتر تمرکز ما در این دوره بر روی مبحث Retrofit و WebService بوده ما این معماری رو به صورت کامل پیاده‌سازی نکردیم اما می‌تونیم بگیم تقریبا نیمی از راه پیاده‌سازی این معماری رو در این دوره رفتیم و تا حد ممکن سعی کردیم یک ساختار منظمی برای کدهامون ایجاد کنیم.

سرفصل‌های دوره آموزش پروژه‌محور Retrofit و LiveData در اندروید

  • آشنایی با مفاهیم API
  • نحوه راه‌اندازی برنامه سمت سرور
  • آشنایی با مفاهیم Headers، Status Codes، Body، Request Methods و . . . 
  • تست API با استفاده از Postman
  • ایجاد برنامه‌ سمت اندروید و آغاز به کار با Retrofit
  • نحوه ایجاد، نمایش، ویرایش و حذف Noteها به همراه دسته‌بندی‌ها
  • آشنایی با LiveData
  • ارائه یک الگوی مناسب برای کار با LiveData
  • مدیریت حالت‌های Loading، Success و Error در برنامه
  • نحوه جستجوی آنلاین 
  • Authentication (احراز هویت)
  • آپلود فایل

* سرفصل‌های ارائه شده به صورت کلی مشخص شدند و در طول دوره به جزئیات خیلی بیشتری پرداخته شده.

زبان برنامه‌نویسی استفاده شده در دوره آموزش پروژه‌محور Retrofit و LiveData در اندروید

در این دوره برای پیاده‌سازی از زبان برنامه‌نویسی کاتلین استفاده شده اما این موضوع محدودیتی برای عزیزانی که ترجیح میدن از جاوا استفاده کنند ایجاد نمی‌کنه. در این مورد لازم می‌دونم به 2 نکته اشاره کنم: 

  1. در صورتی که یک آشنایی اولیه با سینتکس کاتلین داشته باشید که برای این موضوع به شما پیشنهاد می‌کنم در دوره رایگان آموزش مقدماتی کاتلین شرکت کنید به راحتی می‌تونید معادل جاوایی کدهای کاتلینی که در این دوره نوشته میشه رو بنویسید.
  2. من بارها در قسمت‌های مختلف دوره به نحوه چگونگی پیاده‌سازی کدها با جاوا اشاره کردم. مثلا گفتم فلان جا برنامه‌نویسان جاوا باید فلان کار رو انجام بدن تا کار تبدیل کردن کدهای کاتلینی که من نوشتم به جاوا براتون راحتتر بشه.

پیش‌نیازهای دوره آموزش پروژه‌محور Retrofit و LiveData در اندروید

می‌تونیم بگیم این دوره در سطح نسبتا پیشرفته‌ای قرار داره و در صورت شرکت حتما باید تجربه برنامه‌نویسی اندروید داشته باشید که در ادامه قصد دارم به مهم‌ترین پیش‌نیازهای این دوره اشاره داشته باشم:

  • آشنایی با مقدمات برنامه‌نویسی اندروید که در صورت نداشتن این پیش‌نیاز می‌تونید در دوره قدم یک برنامه‌نویسی اندروید شرکت کنید.
  • آشنایی با زبان برنامه‌نویسی کاتلین که همانطور که در بالا هم اشاره کردم می‌تونید در دوره رایگان آموزش مقدماتی کاتلین شرکت کنید. همچنین در صورتی که در استفاده از کاتلین در اندروید به مشکل برخوردید شرکت در دوره مهاجرت به کاتلین در اندروید رو به شما پیشنهاد می‌کنم.
  • همچنین به شما پیشنهاد می‌کنم در دوره رایگان آموزش دیتابیس SQLite‌ در اندروید با کاتلین هم ثبت نام کنید. مبحث SQLite ربطی به Retrofit نداره اما در اون دوره من از معماری‌ای استفاده کردم که در دوره فعلی هم قصد داریم همون معماری رو ادامه بدیم و در صورت مشاهده دوره SQLite درک بهتری از این معماری پیدا خواهید کرد.
  • با توجه به اینکه برنامه سمت سرور با Spring Boot نوشته شده جهت پیدا کردن درک بهتر از کدهای سمت سروری که در اختیارتون قرار داده شده می‌تونید در دوره رایگان آشنایی با Spring Boot شرکت کنید. (این گزینه پیش نیاز محسوب نمیشه و کاملا اختیاری هست).

هدیه ویژه دوره آموزش پروژه‌محور Retrofit و LiveData در اندروید

یک هدیه ویژه برای شرکت کنندگان این دوره در نظر گرفته شده که شامل ویدیوهای ضبط شده یکی از کلاس‌های حضوری من هست که در این ویدئوها مباحثی آموزش داده شده که اگر با اونها آشنایی داشته باشید درک بهتری از Retrofit پیدا می‌کنید و می‌تونیم بگیم به نوعی یک پیش‌نیاز هم برای این دوره محسوب میشه. سرفصل‌های این هدیه شامل موارد زیر هست:‌

  • بررسی مفصل AsyncTask
  • اتصال به سرور
  • نحوه Parse کردن Json

به محض ثبت نام در دوره، فایل‌های مربوط به این هدیه به صورت اتوماتیک برایتان ایمیل خواهد شد و می‌تونید از آنها استفاده کنید.


کلیدواژه: آموزش Retrofit آموزش رتروفیت آموزش Retrofit‌ در اندروید آموزش رتروفیت در اندروید آموزش LiveData آموزش Retrofit و LiveData آموزش برنامه‌نویسی اندروید آموزش Rest API آموزش Rest API در اندروید

لیست قسمت های این دوره:
play_circle_filled
۰۰
معرفی
رایگان
play_circle_filled
۰۱
Introduction To Rest API
رایگان
play_circle_filled
۰۲
Run Server Side Project
رایگان
play_circle_filled
۰۳
Postman & Headers
رایگان
play_circle_filled
۰۴
Http Status Code
رایگان
play_circle_filled
۰۵
Test API
lock ویژه مشترکین
play_circle_filled
۰۶
Use Android Source From Github
lock ویژه مشترکین
play_circle_filled
۰۷
Retrofit Config
lock ویژه مشترکین
play_circle_filled
۰۸
ApiService
lock ویژه مشترکین
play_circle_filled
۰۹
Repository
lock ویژه مشترکین
play_circle_filled
۱۰
Request & Response Part1
lock ویژه مشترکین
play_circle_filled
۱۱
Request & Response Part2
lock ویژه مشترکین
play_circle_filled
۱۲
LiveData
lock ویژه مشترکین
play_circle_filled
۱۳
Error Handling
lock ویژه مشترکین
play_circle_filled
۱۴
Manage Loading, Success & Error Status Part1
lock ویژه مشترکین
play_circle_filled
۱۵
Manage Loading, Success & Error Status Part2
lock ویژه مشترکین
play_circle_filled
۱۶
Manage Loading, Success & Error Status Part3
lock ویژه مشترکین
play_circle_filled
۱۷
Cleaning Code
lock ویژه مشترکین
play_circle_filled
۱۸
Online Search Part1
lock ویژه مشترکین
play_circle_filled
۱۹
Online Search Part2
lock ویژه مشترکین
play_circle_filled
۲۰
Set Header for Request
lock ویژه مشترکین
play_circle_filled
۲۱
Show Note Details
lock ویژه مشترکین
play_circle_filled
۲۲
Save New Note Part1
lock ویژه مشترکین
play_circle_filled
۲۳
Save New Note Part2
lock ویژه مشترکین
play_circle_filled
۲۴
Update Note
lock ویژه مشترکین
play_circle_filled
۲۵
Delete Note
lock ویژه مشترکین
play_circle_filled
۲۶
Better Way For Get Data
lock ویژه مشترکین
play_circle_filled
۲۷
Register User
lock ویژه مشترکین
play_circle_filled
۲۸
Basic Auth Mechanism
lock ویژه مشترکین
play_circle_filled
۲۹
Basic Auth Implementation
lock ویژه مشترکین
play_circle_filled
۳۰
JWT Mechanism
lock ویژه مشترکین
play_circle_filled
۳۱
Upload File
lock ویژه مشترکین
play_circle_filled
۳۲
Upload Multiple Files
lock ویژه مشترکین
دیدگاه ها:
Esmaeil ahmadipour
مشترک دوره
۳ ماه قبل
reply
سلام. این دوره مبحث mvvm رو کامل نگفتید آیا تکمیل mvvm رو در برنامه دارید ؟ چون طبق سبک شما اگر باشه اینم پیش نیازش خواهد بود!
مرسی از سایت خوبتون
۳ ماه قبل در پاسخ به Esmaeil ahmadipour
reply
سلام، وقت بخیر
با توجه به اینکه در این دوره تمرکزمون روی بحث WebService هست فرصت این پیدا نشد که به صورت کامل پیاده‌سازی معماری MVVM رو آموزش بدم و در واقع نیمی از مسیر این معماری رو طی کردیم در این دوره. من قصد آموزش پروژه‌محور MVVM رو دارم اما زمان دقیقش مشخص نیست.
به این نکته هم اشاره کنم که با مفاهیمی که در این دوره یاد می‌گیرید اگر تجربه کار داشته باشید با خوندن سمپل کدهای مربوط به این معماری در گیتهاب خودتون به راحتی توانایی پیاده‌سازی این معماری رو پیدا خواهید کرد و به نظرم این راه بهترین راه یادگیری پترن‌ها و معماری‌های مختلف هست.
۳ ماه قبل
reply
سلام یک سوال کلی دارم درمورد اپ هایی که به سرور وصل میشن هست. اینکه یکی میاد و یه سایت ریسپانسیو طراحی میکنه و تو اندروید با وب ویو نمایش میده. الان دقیقا ساخت اپی که به سرور وصل میشه چه فایده ای داره وقتی میشه یه سایت رو تو وب ویو لود کرد؟ من الان خودم اپی دارم میسازم که فعلا فقط کش کردن ریسپانس هاش میتونه توجیهی برای این باشه. دلیل دیگه ای نمیتونم پیدا کنم که چرا باید از وب ویو استفاده نکنم. اگه میتونید در این مورد راهنمایی کنید ممنون میشم.
۲ ماه قبل در پاسخ به goldeagle00110011
reply
سلام
می‌تونیم بگیم حتی مقایسه این 2 حالت هم کار درستی نیست. اگر این کار کار درست و بهینه‌ و اصولی‌ای بود که دیگه توی اینهمه پروژه کوچک و بزرگ که خیلیها هم وبسایت دارن جداگانه اپلیکیشن طراحی نمی‌کردند. از وب‌ویو در جاهایی خاص از اپلیکیشن برای نمایش یک سری تک صفحات استفاده میشه.
در صورتی که تمایل ندارید جداگانه اپلیکیشن طراحی کنید و ترجیحتون استفاده از نسخه وبی که طراحی کردید به عنوان اپلیکیشن موبایل هست بهتون پیشنهاد می‌کنم حتما برید سراغ PWA و به هیچ عنوان برای اینکار از وب‌ویو استفاده نکنید. PWA بهترین گزینه برای شما میتونه باشه.
موفق و پیروز باشید.
۲ ماه قبل
reply
با سلام و تشکر در رابطه با مبحث رتروفیت سوالی دارم:یک فایل جیسونی روی هاستم دارم(person.json) که محتویات آن در هر لحظه در حال تغییر است قطعه کدی می خواستم که مثلا در هر 10 ثانیه این فایل را از طریق رتروفیت get کند قطعه کدی در اینترنت پیدا کرده ام که از طریق observable محتویات پستی(https://api.chucknorris.io/jokes/random) را هر چند ثانیه یک بار می خواند و نمایش می دهد:
https://github.com/journaldev/journaldev/tree/master/Android/AndroidRetrofitCallEveryXSecond
من میخواهم طوری کدها رو تغییر دهم که فایل من رو بخواند:
http://seeb-sorkh.com/rp15/13981000/person.json
راهنمائی بفرمائید. آیا در این دوره به این مورد اشاره شده؟
۲ ماه قبل
reply
آیا تو این دوره دیتابیس هم برای کش کردن دیتا استفاده میشه؟ اگر نه خواهش میکنم یک دوره هم برای استفاده همزمان از room , retrofit با معماری mvvm ضبط کنید. سپاسگذارم
۲ ماه قبل در پاسخ به zoho1381
reply
با سلام
خیر در این دوره تمرکز ما کاملا بر روی Rest API بوده و به ذخیره سازی لوکال نپرداختیم اما اگر در کنار این دوره، دوره رایگان آموزش دیتابیس SQLite در اندروید با کاتلین رو مشاهده کنید به راحتی می‌تونید این کار رو انجام بدید. در مورد Room و پیاده‌سازی کامل معماری MVVM هم برنامه آموزشی دارم و در خدمت شما خواهم بود.
موفق و پیروز باشید.
jamdar.it
مشترک دوره
۲ ماه قبل
reply
سلام
آیا دوره های آموزشی پشتیبانی دارند؟
من دوره را تهیه کردم اما نه mysql دیتابیسی را نشان میدهد نه postman میتواند به درخواستها پاسخ دهد.
همینجوری تو جلسه دوم گیر کردم نیدونم چیکار کنم
تو intelij idea هم زده
main] o.s.boot.SpringApplication : Application run failed
دوازده ساعت نشستم پاش هرکار کاری کردم درست نشد
پشتیبانی آرکادمی
۲ ماه قبل در پاسخ به jamdar.it
reply
با درود و وقت بخیر. مدرس دوره در اسرع وقت پاسخگو خواهند بود. از صبر و شکیبایی‌تون متشکریم
۲ ماه قبل در پاسخ به jamdar.it
reply
با سلام، اگر کارهای زیر را به درستی انجام داده باشید نباید مشکلی در اجرای برنامه سمت سرور وجود داشته باشه:
1- اجرای سرویس MySql قبل از اجرای برنامه سمت سرور
2- اعمال تغییرات لازم در فایل application.properties دقیقا طبق مراحلی که در ویدئو اشاره شده بود مثل نام دیتابیس و پورت و مسیر آپلود فایل و . . .
3- ساخت جداگانه دیتابیس note_db برای اولین بار

یک بار همه‌ی اینها رو چک کنید اگر باز هم مشکل وجود داشت لطفا از exception که در logcat‌ نمایش داده میشه screenshot بگیرید و برای پشتیبانی آرکادمی در تلگرام ارسال کنید. همانطور که در اندروید در logcat ارورها نمایش داده می‌شوند و ما می‌تونیم بفهمیم مشکل از کجاست در IntelliJ هم این امکان وجود داره و کاملا مشابه اندرویداستودیو هست.
موفق و پیروز باشید.
jamdar.it
مشترک دوره
۱ ماه قبل در پاسخ به امیرحسین عبدالله زاده
reply
من شرح کاملی از مشکل به وجود آمده رو به پشتیبانی ارسال کردم اما با وجود گذشت ۲ هفته هیچ پاسخی برای بنده ارسال نشد.
اصلا پشتیبانی هنوز پیام منو seen نکرده!!!
۱ ماه قبل در پاسخ به jamdar.it
reply
سلام مجدد و عرض معذرت بابت تاخیر در پاسخگویی.
من یک ویدئو اختصاصی برای شما ضبط کردم که دوستان در تلگرام براتون ارسال کردند.
موفق باشید.
sepehrtabeian
مشترک دوره
۲ ماه قبل
reply
سلام خدمت مدرس عزیز.
اگر دوتا base url داشتیم باید چکار کنیم؟
اگر هنگام ارسال رکوئست سمت سرور قبل از رسیدن دیتا اینترنت قطع شد چطوری مدیریت رو انجام بدیم که force close نخوریم؟
با تشکر
۲ ماه قبل در پاسخ به sepehrtabeian
reply
سلام، وقت بخیر
برای اینکار می‌تونید 2 تا متغیر برای BASE_URL و در نتیجه 2 تا آبجکت برای Retrofit و ApiService داشته باشید و از آبجکت ApiService مورد نظر استفاده کنید.
در صورت قطع شدن اینترنت قبل از رسیدن Response طبیعتا پاسخی دریافت نمیشه و متد onFailure اجرا میشه و باید از کاربر تقاضای تلاش مجدد رو داشته باشید.
kaveh_mojtaba
مشترک دوره
۲ ماه قبل
reply
سلام خدمت شما،این انتشار دوره هاتون واقعا منطقی نیست،چند هفته پیش فروشتون طول میکشه بعد چند هفته هم انتشار اموزشتون طول میکشه!یا در طول پیش فروش اموزش ها رو تکمیل کنید یا بعد از پیش فروش یکجا اموزش هارو قرار بدین!
مجید قزاق
مشترک دوره
۲ ماه قبل
reply
سلام اگر ممکن هست قیمت دوره رو کمی پایین بیارید گر چند ارزش این دوره بیشتر از این هاست
اگه امکان داره قیمت پیش فروش رو بزارید
farshad
مشترک دوره
۲ ماه قبل
reply
سلام مهندس عبدلله زاده عزیز، ممنون واسه آموزش های خوبت، عذر میخوام در مورد اینفینیتی لیست هم در این دوره صحبت میکنید؟(شاید خیلی ربط نداره به این مبحث :) ولی خیلی خوب میشه بِست پرکتیسشو یاد بگیریم ) و همچنین در مورد Oauth2 و بست پرکتیس رفرش کردن توکن...
و سوال آخر (که البته درخواسته) آموزش های RxJava2(یا RxKotlin) و Dagger2(یا Koin) و coroutines و jetpack components و تست نوشتن و این دست آموزش های حرفه ای و سطح بالا کِی آماده میشه و آیا اصلا در برنامه کاریتون هست؟ (شایدم یه تبلیغی واسه دوره های بعدتون شد :) )
محمد رجب زاده
مشترک دوره
۱ ماه قبل
reply
سلام استاد دوره واقعا عالی بود
به نظرم همون interceptor فقط ارزشش بیش از این حرفاست ولی شما که مبحث رو خیلی جامع و کاربردی گفتید
۴ هفته قبل در پاسخ به محمد رجب زاده
reply
سلام آقای رجب‌زاده
ممنون از لطف و محبت و همراهی همیشگیتون
nasr302
مشترک دوره
۴ هفته قبل
reply
سلام خدمت استاد گرامی و دوستان عزیز
سورس وب سرویس را از کجا میتونم دانلود کنم؟
۴ هفته قبل در پاسخ به nasr302
reply
سلام دوست عزیز، وقتتون بخیر
بی‌زحمت به پشتیبانی آرکادمی در تلگرام پیام بدید اونجا سورس پروژه به صورت zip شده براتون ارسال میشه.
شاد و موفق و پیروز باشید.
۶ روز قبل
reply
سلام می تونم بپرسم که چ وقتی معماری mvvm رو تحت یک آموزش پروژه محور ارایه میدید لطفا تاریخ اعلام کمنید
سپاس
ارسال دیدگاه:
برای ارسال دیگاه باید به سیستم وارد شوید و یا ثبت نام کنید. ثبت نام چند لحظه بیشتر زمان شما را نمیگیرد.