Search for:

Android Arsenal – Bilddialer

Unterstützung für neue Versionen von Android

Wir fangen an

Sucht hinzufügen

    implementation 'ro.dragossusi.android:imagepicker:1.0.0'

Geben Sie Ihr Zielverzeichnis an

Sie können Ihr Zielverzeichnis mit einer Code- oder Zeichenfolgenressource deklarieren.

Initialisieren Sie für Code das ImagePicker-Verzeichnis (normalerweise in der Application-Klasse):

ImagePicker.directory = "YourDirectory"

Für String-Ressource:

<string name="image_picker_folder_name">YourDirectory</string>

Erstellen Sie einen ImageWrapper

Die Bibliothek wird mit einem Cover für Fragmente geliefert:

    private val imagePickWrapper = FragmentImagePickerWrapper(
        this,
        "${BuildConfig.APPLICATION_ID}.filesystem.provider",
        ::onPermissionError
    ) { uri:Uri?->
        //todo what you want with the image
    }

    private fun onPermissionError(permission: String) {
        //todo permission error handling
        AlertDialog.Builder(requireContext())
            .setTitle("Your permission error")
            .setMessage(permission)
            .show()
    }

Verwenden Sie die integrierte AvatarImageView

Fügen Sie AvatarImageView zum XML-Layout hinzu

<ro.dragossusi.android.imagepicker.ui.AvatarImageView
    android:id="@+id/image_avatar"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:background="?selectableItemBackgroundBorderless"
    android:clickable="true"
    android:focusable="true"
    tools:src="@tools:sample/avatars" />

Legen Sie die Hülle sichtbar

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        //auto sets onClickListener
        findViewById<AvatarImageView>(R.id.image_avatar)
            .imagePickerWrapper = imagePickWrapper
    }

Top 5 Dolphin Emulator-Alternativen für Android

Dolphin Emulator ist ein ziemlich beliebter GameCube- und Wii-Emulator, der unter Windows, Linux, macOS und Android läuft. Es war das erste kommerziell rentable GameCube-Emulator.

Dolphin Emulator hat aufgrund seiner hohen Kompatibilität, konsequenten Entwicklung, umfangreichen Funktionen und der Möglichkeit, Spiele mit Grafikverbesserungen gegenüber den Originalkonsolen zu spielen, hervorragende Unterstützung von der IT- und Videospielbranche erhalten.

Preis: Kostenlos

Alternativer Delphin-Emulator für Android

In diesem Artikel werden wir uns die besten Alternativen zu Dolphin-Emulatoren für Android ansehen.

1. RetroArch

Alternativen zum Delphin-Emulator

RetroArch kann Ihre Android-Emulator-App sein, um Retro-Spiele zu emulieren und zu spielen und sich nostalgisch zu fühlen. Es ist eine Emulatoranwendung für mehrere Plattformen Spiele-Emulatoren, Spiel-Engines, Videospiele, Mediaplayer und andere Anwendungen, die kostenlos und Open Source sind. Es ist eine Standardimplementierung der Libretro-API, die schnell, einfach, portabel und unabhängig sein sollte.

RetroArch kann auf mehreren Plattformen von Windows bis Android ausgeführt werden. RetroArch hat eine Plus-Version mit 127 Kernen. Laut Benutzerbewertungen ist RetroArch eine der besten Alternativen zum Dolphin-Emulator für die Android-Gaming-Community.

Preis: Kostenlos

2. Lemuroid

Alternativen zum Delphin-Emulator

Lemuroid ist auch ein Open-Source-Emulator, der mit der Libretro-API funktioniert. Es ist ein Multi-Plattform-Emulator, der eine breite Palette von Geräten unterstützt, von Fernsehern bis hin zu Android-Telefonen. Sie können Lemuroid verwenden, um Retro-Spiele kostenlos und ohne Werbung zu spielen. Es ist eine der besten Alternativen zum Dolphin Emulator für Android.

Preis: Kostenlos

3. ePSXe

ePSXe ist ein Premium-PlayStation-Emulator, mit dem Sie PSX- und PSOne-Spiele auf Ihrem eigenen Android-Telefon spielen können. Unterstützt virtuelles Touchpad und Hardware-Key-Mapping. Es enthält auch native Unterstützung für ARM und Intel Atom X86.

ePSXe verfügt über HD-aufgerüstete Grafik, darunter zwei OpenGL-Renderer und einen 2x/4x-Software-Renderer, sowie Cheat-Codes, gespeicherte Daten und PC-Karten-Meme-Kompatibilität.

Preis: 2,79 $ (kann variieren)

4. Entenstation

Alternativen zum Delphin-Emulator

DuckStation ist ein sehr leistungsfähiger PS1- und PSX-Emulator auf Ihrem Android-Telefon. Es ist ein Sony PlayStation (TM) / PSX / PS1-Konsolensimulator / -emulator, der sich auf Gameplay, Geschwindigkeit und langfristige Nachhaltigkeit konzentriert. Das Ziel ist es, so genau wie möglich zu sein und gleichzeitig eine hohe Leistung beizubehalten.

Preis: Kostenlos

5. ClassicBoy Pro

ClassicBoy Pro ist ein sehr beliebter Spieleemulator für Android-Telefone. Es ermöglicht Ihnen, Retro-Spiele auf verschiedenen Spielkonsolen auf Android zu spielen. Unterstützt PCSX-ReARMed, Beetle-PSX, Mupen64Plus, VBA-M, mGBA, Desmume, MelondS, Snes9x, FCEUmm, Gemplus, Yabause, FB Alpha, MAME-Arcade (0.78 und 0.139 Romsets), NeoPopella, Neo BeeCD -PCE, Cygne , etc. Aufgrund der großen Auswahl an unterstützten Spielemulationen ist es eine der besten Alternativen zu Dolphin-Emulatoren.

Preis: Kostenlos

Notiz: Wir sind mit keiner der hier aufgeführten Software oder Produkte verbunden. Die Liste basiert auf Bewertungen und Rezensionen von verschiedenen Plattformen.

Ich hoffe, dieser Artikel über Dolphin-Emulator-Alternativen war hilfreich für Sie, wenn ja, teilen Sie ihn in Ihren sozialen Netzwerken. Vielen Dank für das Lesen des Artikels.

Android Arsenal – Validierung

Dieses Projekt bietet eine einfache und vereinfachte Möglichkeit, TextInputLayoutEditText zu validieren

Installation

  1. Fügen Sie das JitPack-Repository zu Ihrer Build-Datei hinzu
 allprojects {
  repositories {
   ...
   maven { url 'https://jitpack.io' }
  }
 }
  1. Sucht hinzufügen
    dependencies {
         implementation 'com.github.BrianHardyR:TextInputLayoutValidator:1.1.2'
 }

Wie

Einfache Validierung

val myinput = findViewById<TextInputLayout>(R.id.my_input)

myinput.validate(
    default = "my default text",
    validators = listOf(
        { text -> t.isNotEmpty() },
        ...
    ),
    error = "my error text",
    onValid = { validText -> 
        // do something with the valid text
     }
)

Verwendung des Validierungsobjekts

Fehlermeldung für jede Validierungsbedingung
val phoneNumberValidator = TextInputValidator(
    defaultString = "My default text",
    validators = listOf(
        { text -> (text.length > 12) to "Length must be greater than 12"},
        { text -> text.startsWith('+') to "Input must start with '+'"},
        ...
    )
)
Eine Fehlermeldung
val phoneNumberValidator = TextInputValidationObj(
    default = "My default text",
    error = "Please enter a valid phone number",
    validators = listOf(
        { text -> text.length > 12},
        { text -> text.startsWith('+')},
        ...
    )
)

myinput.validate(phoneNumberValidator){ validText ->
    // do something with the valid text
}

Eingabe bestätigen Nachdem Sie das Validierungsobjekt auf TextInputLayout gesetzt haben, können Sie es überall in Ihrem Code überprüfen

myinput.valid() // Return a Boolean.

Android Arsenal – Validierung

Easy-Checker ist eine sehr einfache Bibliothek zur Validierung von Einträgen für Android, die in Kotlina geschrieben und auch über Java-Code leicht zugänglich ist. Sie erhalten viele Validierungsmethoden oder Bibliotheken. Aber die meisten von ihnen sind für diese einfache Aufgabe nicht so einfach, also suchen wir die meiste Zeit nach einer Legacy-If-Else-Kette, um alle Eingabefelder zu überprüfen, und wir alle wissen, wie nervig das ist.

  • Leeres Eingabefeld (Edittext)
  • Bestätigung der Telefonnummer
  • E-Mail-Validierung
  • Passwort Bestätigung
  • Bestätigen Sie die Passwortvalidierung
  • Benutzerdefinierter Validator
  • Varargs zur einfachen Eingabe von Eingabefeldern anstelle von Strings oder Listen
  • Benutzerdefinierte RegEx-Passwortvalidierung
  • Singleton-Klasse zum Entfernen von Objekten und Speicherlecks

Installation

Easy-Checker ermöglicht eine einfache Maven-basierte Installation

Schritt 1:

fügen Sie dies zu Ihrer build.gradle-Stammdatei hinzu

 allprojects {
 repositories {
 maven { url 'https://jitpack.io' }
 }
 }
Schritt 2:

Fügen Sie diese Abhängigkeit der Datei build.gradle auf Anwendungsebene hinzu

implementation 'com.github.mkhan9047:Easy-Checker:1.0.2'

Wie benutzt man?

Die Hauptklasse ist EasyChecker, es ist eine Singleton-Klasse, die nur eine öffentliche Funktion hat, validateInput (), es ist ein supereinfacher Prozess, fügen Sie Tags zum Eingabefeld hinzu, rufen Sie die Funktion mit möglichen Parametern auf!

Bitte fügen Sie android hinzu: tag = “Ihr Feldname” in jedem Eingabefeld (EditText oder TextView), Super einfach, Diese Bibliothek verwendet Tags, um die eigentliche Fehlermeldung auszuwerfen, z. B. “Name darf nicht leer sein” oder “E-Mail ist ungültig”. !
Tipp: Konstante Tags sind “Passwort”, “Telefon”, “E-Mail”, “Passwort bestätigen”. Wenn Sie diese Felder haben, verpassen Sie diese Tags nicht und ändern Sie auch nicht die Tag-Nachricht. Für andere Felder können Sie alles verwenden, was Sie wollen !
   <EditText
        android:id="@+id/firstEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Name"
        android:tag="Name"/>
        
        <EditText
        android:id="@+id/fourthEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Confirm Password"
        android:tag="Confirm Password">

Parameter

  • Kontext
  • Gewünschte Passwortlänge (Ganzzahl, standardmäßig Bereich 4 bis 24)
  • Beispielpasswort für die Passwortüberprüfung mit Regex, ich habe eine benutzerdefinierte Klasse mit einigen regulären Mustern geschrieben, siehe Abschnitt Passwortmuster, wenn Sie kein Passwortmuster verwenden möchten, übergeben Sie null oder PasswordPattern.PASSWORD_PATTERN_NONE
  • Eingabefelder oder TextFields (EditText, TextView) [Pass as much you have one by one It’s varargs]
      try {
              var isValidationSuccess = EasyChecker.validateInput(
                    MainActivity.this,
                    8,
                    PasswordPattern.PASSWORD_PATTERN_NONE,
                    firstNameEditText,
                    lastNameEditText,
                    emailEditText,
                    passwordEditText,
                    confrimPasswordEditText
                )
                /**you can either use the returned boolean or just do the implementaiton 
                here as errors are only thrown in exception blocks
                **/
               doSignUp()
                //or
                if(isValidationSuccess){
                    //if validated
                         doSignUp()
                }else{
                    //if not validated
                }
            } catch (developerErrorException: DeveloperErrorException) {
                //best approach to print in log
                developerErrorException.printStackTrace()
            } catch (inputErrorException: InputErrorException) {
                //best approach is show this to user
                Toast.makeText(
                    this,
                    inputErrorException.message,
                    Toast.LENGTH_LONG
                ).show()
            }

Ausnahmen

Es gibt zwei Arten von Ausnahmen, eine ist DeveloperException und die andere ist InputErrorException. Diese Ausnahmen sind im Grunde verifizierte Ausnahmen, also müssen Sie beide Ausnahmen abfangen.

  • DeveloperException: Grundsätzlich entfällt diese Ausnahme, wenn der Entwickler bei der Implementierung dieser Bibliothek einen Fehler gemacht hat, z. B. das Hinzufügen von “Tag” zum Eingabefeld oder Textfeld oder das Angeben falscher Parameter oder anderes

  • InputErrorException: Diese Ausnahme ist der Hauptvalidierungsfehler des Benutzers. Sie können die eigentliche Nachricht aus der Ausnahme abrufen und dem Benutzer anzeigen. Wenn beispielsweise ein Benutzer kein E-Mail-Feld eingegeben hat, würde er Folgendes erhalten: “E-Mail Feld darf nicht leer sein ! ” oder was auch immer du willst

Passwortmuster

Ich habe eine Klasse mit einer beliebten Regex-Passwortvorlage geschrieben, hier sind die Konstanten:

  • PasswordPattern.PASSWORD_PATTERN_NONE = Verwenden Sie dies, wenn Sie Regex nicht für die Passwortvalidierung verwenden möchten
  • PasswordPattern.PASSWORD_PATTERN_ONE = Mindestens acht Zeichen, mindestens ein Buchstabe und eine Zahl
  • PasswordPattern.PASSWORD_PATTERN_TWO = Mindestens acht Zeichen, mindestens ein Buchstabe, eine Zahl und ein Sonderzeichen
  • PasswordPattern.PASSWORD_PATTERN_THREE = Mindestens acht Zeichen, mindestens ein Großbuchstabe, ein Kleinbuchstabe und eine Zahl
  • PasswordPattern.PASSWORD_PATTERN_THREE = Mindestens acht Zeichen, mindestens ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Sonderzeichen

Entwicklung

Möchten Sie einen Beitrag leisten? Toll! Stellen Sie einen Antrag auf Rückzug und geben Sie Ihr Bestes, ich werde bezahlen, wenn es für andere gut ist!

Lizenz

MIT-Lizenz Copyright (c) 2019 Mujahid Khan Hiermit wird jeder Person, die eine Kopie dieser Software und zugehöriger Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung, einschließlich ohne Einschränkung, Geschäfte zu tätigen das Recht, Kopien der Software zu verwenden, zu kopieren, zu modifizieren, zusammenzuführen, zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder Kopien der Software zu verkaufen und die Personen, denen die Software zur Verfügung gestellt wurde, dazu zu ermächtigen, vorbehaltlich der folgenden Bedingungen: Teile der Software.

DIE SOFTWARE WIRD OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG BEREITGESTELLT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE VERKAUFSGARANTIE, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. DIE AUTOREN ODER URHEBERRECHTSVERANTWORTLICHEN HAFTEN UNTER KEINEN UMSTÄNDEN FÜR JEGLICHE ANFRAGE, SCHÄDEN ODER SONSTIGE VERANTWORTUNG, OB IN DER ARBEIT DES VERTRAGES, DER TEILUNG ODER ANDERER, DIE HERVORKOMMEN

Jetzt in Android #55. Android Studio, DataStore, Glance… | lähde: Manuel Vivo | Android-Entwickler Februar 2022

Er macht Illustrationen Virginia Poltrack

Android Arsenal – Scroll-Ansichten

Swiper für Android Jetpack Compose

Android Jetpack Compose Drag-Bibliothek.

Herunterladen

Gradl

Fügen Sie es zuerst Ihrem Root-Projekt hinzu build.gradle

allprojects {
    repositories {
        mavenCentral()
    }
}

Andere Add Sucht

dependencies {
    implementation 'io.github.lhoyong:swiper:1.0.1'
}

Einfaches Beispiel

Ziehen Sie die folgenden Elemente einfach mit der Kompilierungsfunktion.

Swiper(
        items = items,
        modifier = Modifier
            .fillMaxSize()
            .background(Color.Gray),
        onSwiped = { /* TODO */ }, // swipe end callback
     ) { item ->
        // composable swipe item
        SwipeItem(item)
    }  

Gehen Sie einfach Beispiel.

Lizenz

Copyright 2021 by lhoyong

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

5 Alternative zum Dolphin-Emulator für Android

Dolphin Emulator ist ein ziemlich beliebter GameCube- und Wii-Emulator, der unter Windows, Linux, MacOS und Android läuft. Es war der erste kommerziell nutzbare GameCube-Emulator.

Dolphin Emulator hat aufgrund seiner hohen Kompatibilität, konsequenten Entwicklung, umfangreichen Funktionen und der Möglichkeit, Spiele mit Grafikverbesserungen gegenüber den Originalkonsolen zu spielen, hervorragende Unterstützung von der IT- und Videospielindustrie erhalten.

Preis: Kostenlos

Top 5 Dolphin Emulator-Alternativen für Android

In diesem Artikel wollen wir einen Blick auf die besten Dolphin-Emulator-Alternativen für Android werfen.

1. RetroArch

RetroArch kann Ihre Android-Emulator-App sein, um Retro-Spiele zu emulieren und zu spielen und sich nostalgisch zu fühlen. Es ist eine Multi-Plattform-Emulator-Anwendung für Spiele-Emulatoren, Game-Engines, Videospiele, Mediaplayer und andere Anwendungen, die kostenlos und Open Source sind. Es ist eine Standardimplementierung der Libretto-API, die schnell, einfach, portabel und unabhängig sein sollte.

RetroArch kann auf mehreren Plattformen von Windows bis Android ausgeführt werden. RetroArch hat eine Plus-Version mit 127 Kernen.

Preis: Kostenlos

2. Lemuroid

Lemuroid ist auch ein Open-Source-Emulator, der mit der Libretro-API funktioniert. Es ist ein Multi-Plattform-Emulator, der eine breite Palette von Geräten unterstützt, von Fernsehern bis hin zu Android-Telefonen. Sie können Lemuroid verwenden, um Retro-Spiele kostenlos und ohne Werbung zu spielen. Es ist eine der besten Alternativen zum Dolphin Emulator.

Preis: Kostenlos

3. ePSXe

ePSXe ist ein Premium-PlayStation-Emulator, mit dem Sie PSX- und PSOne-Spiele auf Ihrem eigenen Android-Telefon spielen können. Unterstützt virtuelles Touchpad und Hardware-Key-Mapping. Es enthält auch native Unterstützung für ARM und Intel Atom X86.

ePSXe verfügt über HD-aufgerüstete Grafik, darunter zwei OpenGL-Renderer und einen 2x/4x-Software-Renderer, sowie Cheat-Codes, gespeicherte Daten und Memcard-Kompatibilität mit der PC-Version.

Preis: 2,79 $ (kann variieren)

4. Entenstation

DuckStation ist ein sehr leistungsfähiger PS1- und PSX-Emulator auf Ihrem Android-Telefon. Es ist ein Sony PlayStation (TM) / PSX / PS1-Konsolensimulator / -emulator, der sich auf Gameplay, Geschwindigkeit und langfristige Nachhaltigkeit konzentriert. Das Ziel ist es, so genau wie möglich zu sein und gleichzeitig eine hohe Leistung beizubehalten.

Preis: Kostenlos

5. ClassicBoy Pro

ClassicBoy Pro ist ein sehr beliebter Spieleemulator für Android-Telefone. Ermöglicht es Ihnen, Retro-Spiele verschiedener Spielkonsolen auf Android zu spielen. Unterstützt PCSX-ReARMed, Beetle-PSX, Mupen64Plus, VBA-M, mGBA, Desmume, MelondS, Snes9x, FCEUmm, Genplus, Yabause, FB Alpha, MAME-arcade (0.78 und 0.139 romset), NeoPop, Neoe -PCE, Cygne, etc. Aufgrund der großen Auswahl an unterstützten Spielemulationen ist es eine der besten Alternativen zu Dolphin-Emulatoren.

Preis: Kostenlos

Wenn Ihnen dieser Leitfaden geholfen hat, teilen Sie ihn in den sozialen Medien. Vielen Dank für das Lesen des Artikels.

Liste der unterstützten Geräte für Android 12L

Android 12L Beta 3 ist für Entwickler. Wenn Sie Entwickler oder Betatester sind, können Sie die neueste Beta 3 herunterladen und Ihre Apps mit der neuen Version kompatibel machen.

Hier sind einige Verbesserungen in Beta 3:

  • Die Schaltfläche „Split top“ in PiP wurde entfernt
  • Der Text „Keine Benachrichtigung“ unter dem Schatten / Bildschirm
  • Die Winkelradien des geteilten Bildschirms entsprechen dem physikalischen Winkel des Bildschirms [U]
  • Symbol “Split Top” (Endname) gesetzt.
  • Passen Sie die Seite mit den Bildschirmschonereinstellungen an (ursprünglich Daydream).
  • Die Uhrzeit wird jetzt in „Auf einen Blick“ angezeigt

Liste der von Android 12L unterstützten Geräte

Hier ist eine Liste von Geräten, die Android 12L unterstützen:

  • Pixel 6 Pro
  • Pixel6
  • Pixel 5a
  • Pixel 5
  • Pixel 4a (5G)
  • Pixel 4a
  • Pixel 4 XL
  • Pixel 4
  • Pixel 3a XL
  • Pixel 3a

Wenn sich Ihr Gerät in der Liste der unterstützten Geräte befindet, können Sie es für das Android 12L Beta-Programm auswählen und die neuen Funktionen nutzen.

Vielen Dank für das Lesen des Artikels. Folgen Sie uns weiter Twitter für die neuesten Updates auf Android.

Android Arsenal – Architektur

🌳 Mit dem ViewModel-Lebenszyklus können Sie Änderungen im Lebenszyklus des Jetpack-ViewModel überwachen und beobachten.
Es unterstützt auch nützliche Erweiterungsfunktionen für RxKotlin / RxJava und Korutine.

Einschließlich Ihres Projekts

Gradl

Fügen Sie den unten stehenden Code zu Ihrem eigenen hinzu Wurzel build.gradle Datei (nicht Ihr build.gradle-Dateimodul):

allprojects {
    repositories {
        mavenCentral()
    }
}

Fügen Sie dann die unten stehende Abhängigkeit zu Ihrer eigenen hinzu Modul‘S build.gradle Datei:

dependencies {
    implementation "com.github.skydoves:viewmodel-lifecycle:1.1.0"
}

SCHNAPPSCHUSS


Snapshots der aktuellen Entwicklungsversion von ViewModel-Lifecycle, die folgen, sind verfügbar die neuesten Versionen.

repositories {
   maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
}

Benutzen

ViewModel-Lifecycle ermöglicht es Ihnen, zwei Lebenszyklusänderungen zu beobachten: initialisiert ich gereinigt.

ViewModelLifecycleOwner

ViewModelLifecycleOwner ist der Besitzer eines erweiterbaren Lebenszyklus für das Jetpack ViewModel LifecycleOwner. Es überwacht und stellt Lebenszykluszustände für ViewModels bereit. Du kannst es bekommen ViewModelLifecycleOwner aus Ihrem ViewModel wie folgt:

class MyActivity : AppCompatActivity() {

  private val viewModel by viewModels<MyViewModel>()

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    
    val viewModelLifecycleOwner = viewModel.viewModelLifecycleOwner
...

Sie können es auch wie folgt direkt in Ihr ViewModel übertragen:

class MyViewModel : ViewModel() {

  val lifecycleOwner = viewModelLifecycleOwner
}

ViewModelLifecycleOwner für LiveData

Sie können es auch verwenden, um Ihre eigenen zu beobachten Lebensdaten mit ViewModelLifecycleOwner gemäß dem ViewModel-Lebenszyklus. Wenn der Lebenszyklus in den gelöschten Zustand versetzt wird, wird der Beobachter automatisch entfernt.

class MyViewModel : ViewModel() {

  private val liveData = MutableLiveData<String>()

  init {
    val lifecycleOwner = liveData.observe(viewModelLifecycleOwner) {
      // sometihng
    }
  }
}

Hinweis: Wenn Sie verwenden ViewModelLifecycleOwner Um Ihre LiveData zu beobachten, erhalten Beobachter jedes Ereignis, bevor der Lebenszyklus in den gelöschten Zustand übergeht. Sie erhalten jedoch keine weiteren Ereignisse durch Freizeitaktivitäten wie Bildschirmdrehung. Stellen Sie also sicher, welche lifecycleOwner ist die beste Lösung.

ViewModelLifecycle

ViewModelLifecycle ist die Umsetzung Lebenszyklusdie dem Lebenszyklus des ViewModel folgt. ViewModelLifecycle mehrfach verarbeitet LifecycleObserver wie zum Beispiel ViewModelLifecycleObserver um den ViewModel-Lebenszyklus zu überwachen. ViewModelLifecycle gehört ViewModelLifecycleOwnerund Sie können es direkt von erhalten [ViewModelLifecycleOwner] folgendermaßen:

val viewModelLifecycle = viewModelLifecycleOwner.viewModelLifecycle

ViewModelLifecycle Observer

Sie können Änderungen im Lebenszyklus nachverfolgen ViewModelLifecycle mit addViewModelLifecycleObserver Verlängerung wie folgt:

viewModel.viewModelLifecycleOwner.addViewModelLifecycleObserver { viewModelState ->
  when (viewModelState) {
    ViewModelState.INITIALIZED -> // viewModel was initialized
    ViewModelState.CLEARED -> // viewModel was cleraed
  }
}

Sie können auch Änderungen im Lebenszyklus beobachten ViewModelLifecycle mit addObserver folgendermaßen:

viewModelLifecycleOwner.lifecycle.addObserver(
  object : DefaultViewModelLifecycleObserver {
    override fun onInitialized(viewModelLifecycleOwner: ViewModelLifecycleOwner) {
        // viewModel was initialized
    }

    override fun onCleared(viewModelLifecycleOwner: ViewModelLifecycleOwner) {
        // viewModel was cleraed
    }
  }
)

Sie können auch Ihre eigenen benutzerdefinierten Lifecycle Observer-Klassen implementieren DefaultViewModelLifecycleObserver ich FullViewModelLifecycleObserver Schnittstellen.

ViewModel-Lebenszyklus für RxKotlin (RxJava)

ViewModel Lifecycle bietet nützliche Erweiterungen für RxKotlin (RxJava).

Gradl

Fügen Sie die Sucht unten Ihrer eigenen hinzu Modul build.gradle Datei:

dependencies {
    // RxKotlin3 (RxJava3)
    implementation "com.github.skydoves:viewmodel-lifecycle-rxkotlin3:$version"

    // RxKotlin2 (RxJava2)
    implementation "com.github.skydoves:viewmodel-lifecycle-rxkotlin2:$version"
}

AutoDisposable

Mit autoDisposable Erweiterung können Sie eine erstellen Disposable Delegieren Sie die anzurufende Eigenschaft dispose() funktionieren automatisch, wenn das ViewModel wie folgt gelöscht wird:

class MyViewModel : ViewModel() {

  // dispose CompositeDisposable automatically when viewModel is getting cleared
  val compositeDisposable by autoDisposable(CompositeDisposable())
}

Der autoDisposable Die Erweiterung erstellt eine schreibgeschützte Eigenschaft, die sie empfängt Disposable Schnittstelle als Anfangswert.

ViewModel-Lebenszyklus für Volumenkörper

ViewModel-Lifecycle unterstützt auch Bits zum Verfolgen und Beobachten von ViewModel-Lebenszyklusänderungen.

Gradl

Fügen Sie die Sucht unten Ihrer eigenen hinzu Modul build.gradle Datei:

dependencies {
    implementation "com.github.skydoves:viewmodel-lifecycle-coroutines:$version"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2"
}

ViewModelLifecycle-Ablauf

Sie können Lebenszyklusänderungen als Flow with beobachten viewModelLifecycleFlow Verlängerung wie folgt:

class MyInteractor(
  private val viewModelLifecycleOwner: ViewModelLifecycleOwner
) : CoroutineScope {

  override val coroutineContext: CoroutineContext = SupervisorJob() + Dispatchers.Main

  init {
    launch(coroutineContext) {
      viewModelLifecycleOwner.viewModelLifecycleFlow().collect { viewModelState ->
        when (viewModelState) {
          ViewModelState.INITIALIZED -> // ViewModel was initialized.
          ViewModelState.CLEARED -> {
            // ViewModel was cleared.
            coroutineContext.cancel() // cancel the custom scope.
          }
        }
      }
    }
  }
}

Stellen Sie sicher, dass Sie Ihre Gewohnheit stornieren CoroutineScope nach Beobachtung ViewModelState.CLEAREDich die viewModelLifecycleFlow Erweiterung muss laufen hauptsächlich Faden.

Ist diese Bibliothek nützlich für Sie? ❤️

Unterstützen Sie dies durch Ihren Beitritt Sterngucker für dieses Depot.
ich Folgen mich für meine nächsten Kreationen! 🤩

Copyright 2022 skydoves (Jaewoong Eum)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the L

Android 12L Beta 3 veröffentlicht: neue Funktionen und Verbesserungen

Wie von den Entwicklern erwartet, wurde Android 12L Beta 3 veröffentlicht, das Entwicklern nun zur Verfügung steht, um die Kompatibilität von Anwendungen und SDKs ein letztes Mal vor der endgültigen Veröffentlichung von Android 12L zu testen.

Laut Google ist Android 12L eine spezielle Version von Android 12, die speziell für Großbildgeräte wie Tablets, Ordner, Chromebooks und mehr entwickelt wurde.

Im Oktober 2021 brachte Google Android 12L auf den Markt, weniger als einen Monat nach der stabilen Veröffentlichung von Android 12.

Android 12L erhält Beta-Updates vor der endgültigen Veröffentlichung. Bisher wurden zwei Beta-Updates veröffentlicht, und Beta 3 wurde heute veröffentlicht.

Android 12L-Edition:

Erscheinungsdatum: 9. Februar 2022
Entwurf: S2B3.220205.007.A1
Emulatorunterstützung: x86 (64-Bit), ARM (v8-A)
Sicherheitspatch-Level: Februar 2022
Google Play-Dienste: 21.24.23

Android 12L Beta 3 veröffentlicht
Android 12L Beta 3 veröffentlicht

Verbesserungen in der Android 12L-Version:

Die folgenden Hauptprobleme wurden in Android 12L Beta 3 behoben:

  • Es wurde ein Problem behoben, das verhinderte, dass Wetterinformationen im System-Widget auf einen Blick angezeigt wurden. (Ausgabe # 210113641).
  • Es wurde ein Problem behoben, bei dem die Off-Screen-Animation nicht konsistent angezeigt wurde, wenn der Gerätebildschirm ausgeschaltet war. (Ausgabe # 210465289)
  • Behebung von Problemen, die zum Absturz des Systemtreibers führten, wenn versucht wurde, den Split-Screen-Modus mit der Option „Pin to Top“ aufzurufen. (Ausgabe # 209896931, Ausgabe # 211298556)

Für Pixel 3a (XL), Pixel 4 (XL), Pixel 4a 5G, Pixel 5, Pixel 5a, Pixel 6 und Pixel 6 Pro sowie für den Android-Emulator, Bilder von Android 12L Beta 3 (S2B3.220205.007) mit Sicherheit Patch von Montag bis Februar sind verfügbar. Das Spitzenmodell von 2018 wird nicht auf Android 12L aktualisiert, da das Pixel 3/XL Anfang dieser Woche das letzte Update erhalten hat.

Liste der unterstützten Geräte für Android 12L

  • Pixel 6 Pro: Werksimage – OTA
  • Pixel 6: Werksbild – OTA
  • Pixel 5a: Werksbild – OTA
  • Pixel 5: Werksbild – OTA
  • Pixel 4a (5G): Werksabbild – OTA
  • Pixel 4a: Werksbild – OTA
  • Pixel 4 XL: Werksimage – OTA
  • Pixel 4: Werksbild – OTA
  • Pixel 3a XL: Werksbild – OTA
  • Pixel 3a: Werksbild – OTA

Vielen Dank für das Lesen des Artikels. Teilen Sie das Update auf Social Media und Reddit. Folge uns für die neuesten Android-News.