Sobes.tech
Junior — Middle

Πώς μπορεί να διασφαλιστεί η διατήρηση του αντικειμένου που σχετίζεται με το ενεργό συστατικό στο Koin;

sobes.tech AI

Απάντηση από AI

Στο Koin, για την αποθήκευση ενός αντικειμένου που σχετίζεται με ένα ενεργό συστατικό (π.χ. Activity ή Fragment), χρησιμοποιείται ένα scope που συνδέεται με τον κύκλο ζωής αυτού του συστατικού.

Για να διασφαλίσετε την αποθήκευση του αντικειμένου κατά τη διάρκεια ζωής του συστατικού, πρέπει:

  1. Να δημιουργήσετε ένα scope που σχετίζεται με το συστατικό.
  2. Να ορίσετε τις εξαρτήσεις μέσα σε αυτό το scope.
  3. Να χρησιμοποιήσετε το scope για να λαμβάνετε στιγμιότυπα που θα ζουν όσο και το συστατικό.

Παράδειγμα για Activity:

val activityModule = module {
    scope<Activity> {
        scoped { MyScopedDependency() }
    }
}

// Στο Activity
class MyActivity : AppCompatActivity() {
    private val myDependency: MyScopedDependency by currentScope.inject()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
    }
}

Έτσι, το αντικείμενο MyScopedDependency θα δημιουργηθεί και θα διατηρηθεί στο πλαίσιο του κύκλου ζωής του MyActivity και θα καταστραφεί μαζί της.