آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

انوتیشن Binds@

از این انوتیشن فقط برای تزریق اینترفیس استفاده میشه. در کل استفاده از چندان توصیه نمیشه.

اگر اینترفیس زیر رو داشته باشیم:

 

interface SomeInterface{
    fun getAllThings() : String
}

و کلاس زیر اون رو پیاده سازی کرده باشه:

 

class SomeInterfaceImpl @Inject constructor() : SomeInterface{
    override fun getAllThings(): String {
        return "A Thing"
    }
}

در این صورت کلاس ماژول حتما باید از نوع abstract باشه و خود متد تزریق هم باید از نوع abstract باشه:

 

@Module
@InstallIn(ActivityComponent::class)
abstract class MyModule{

    @Binds
    @ActivityScoped
    abstract fun bindSomeDependency(
        someImpl : SomeInterfaceImpl
    ) : SomeInterface
}

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۲ آذر ۰۲ ، ۱۶:۲۱
میم دال

معرفی انوتیشن های hilt:

1. ابتدا می بایست کلاس application را اکستند کرده و انوتیشن زیر را قبل از معرفی کلاس بنویسیم:

HiltAndroidApp@

2. استفاده از انوتیشن زیر به معنی این است که میشه در این کلاس آبجکت inject کرد:

AndroidEntryPoint@

 

3. استفاده از Inject@ در کانستراکتور یک کلاس به این معنی است که شی این کلاس تزریق خواهد شد. به صورت زیر:

 

class MyClass @Inject constructor(وابستگی ها)  { }

 

در این کلاس اگر وابستگی وجود داشته باشه و در کلاس module وابستگی ها تعریف شده باشن، وابستگی ها تزریق میشن.

 

4. برای تزریق context قبلش از انوتیشن ApplicationContext@ استفاده میکنیم.

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ آبان ۰۲ ، ۰۴:۱۱
میم دال

کتابخانه های ktx در اندروید یه سری API جدید و ساده با استفاده از لامبدا اینا برای ما ایجاد میکنن. این لایبرری ها رو باید به صورت دستی در پروژه اضافه کنیم. یکی از بهترین هاش که معمولا استفاده میشه، برای instance کردن ویو مدل هست که توسط delegation انجام میشه. 

 

private val myViewModel : MyViewModel by viewModels() //لایف سایکل متصل به فرگمنت
private val myViewModel1 by viewModels<MyViewModel>() //لایف سایکل متصل به فرگمنت 
private val myViewModel2 : MyViewModel by activityViewModels() // لایف سایکل متصل به اکتیویتی

 

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

 

روش کلاسیک ایجاد ویومدل:

 

val vm = ViewModelProvider(this).get(MyViewModel::class.java)

 

ایجاد ویو مدل با استفاده از lazy:

 

private val MyViewModelby lazy {
    ViewModelProvider(this).get(MyViewModel::class.java)
}

 

۰ نظر موافقین ۰ مخالفین ۰ ۲۲ مهر ۰۲ ، ۰۳:۵۸
میم دال

برای push کردن فاینال، اول باید باید pull بگیری. برای اینکه ممکنه از قبل آپدیتی وجود داشته باشه یا پروژه لوکال به هر علت ایراد داشته باشه.

وقتی pull بگیری ممکنه conflict بده. در این صورت merge میکنی و در نهایت تغییرات رو push میکنی.

 

از merge بدم میاد واقعا :|

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مهر ۰۲ ، ۱۳:۵۸
میم دال

وقتی یه کلاسی لود میشه تمامی فیلدهای اون هم لود میشن. بعضی از آبجکت ها سنگین هستن (مثل دیتابیس اینا) و initial شدن اونها کاست زیادی داره. به همین خاطر از lazy توی کاتلین استفاده میشه و باعث میشه به محض استفاده از اون آبجکت، لود بشه.

 

مثال:

۰ نظر موافقین ۰ مخالفین ۰ ۱۱ مهر ۰۲ ، ۲۰:۳۴
میم دال

برای اینکه دو تا ریکوئست پشت سر هم بزنیم، میشه از اپراتور flatMap توی rx استفاده کرد. آبجکتی که روی آن flatMap رو صدا میکنیم، باید observable باشه.

برای این کار خروجی دو تا ریکوئست رو از نوع observable تعریف میکنیم. روی ریسپانس ریکوئست اول flatMap میزنیم. flatMap توی ورودی یه فانکشن میگیره. ریسپانس ریکوئست اول ورودی این فانکشن هست. در واقع در بادی این فانکشن میشه روی ریسپانس ریکوئست اول manipulate انجام داد. در نهایت ریکوئست دوم رو return میکنیم و subscribe انجام میدیم. اگر ریکوئست اول به ارور بخوره، دومی انجام نمیشه و میره توی onError.

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ شهریور ۰۲ ، ۱۷:۲۱
میم دال

environment:

این قسمت نسخه‌ی حداقلی از Dart و Flutter برای اجرای پروژه رو نشون میده.

 

dependencies:

وابستگی های پروژه که میتونه شامل پکیج‌ها، کتابخانه‌ها و منابع دیگری باشه رو نشون میده.

 

dev_dependencies:

وابستگی‌های توسعه‌ای (به عنوان مثال، ابزارها برای تست و اشکال‌زدایی) رو نشون میده. این وابستگی‌ها برای توسعه و اجرای تست‌های توسعه مورد استفاده قرار می‌گیرند و به طور معمول در محیط اجرای واقعی برنامه لازم نیستند.

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۱ شهریور ۰۲ ، ۱۵:۰۲
میم دال

توی این سایت اگر json رو بدی کلاس مدل رو برات جنریت میکنه:

 

https://app.quicktype.io/

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۴ مرداد ۰۲ ، ۱۳:۰۳
میم دال