Ich habe heimlich eine Bibliothek erstellt, die es einfach macht, mit den gemeinsamen Einstellungen von Android umzugehen, daher werde ich den Adventskalender nutzen und ihn vorstellen.
Preferhythm
https://github.com/KazaKago/Preferhythm
What's this?
Bei der Entwicklung einer Android-App können Sie die Werte auf Ihrem Gerät speichern. In diesem Fall verwenden Sie jedoch normalerweise die freigegebenen Einstellungen. Ich persönlich dachte jedoch, dass es schwierig sein würde, es zu verwenden, oder dass es eine Brutstätte für menschliche Fehler wie Tippfehler sein würde, und so erstellte ich eine Wrapper-Bibliothek für gemeinsame Einstellungen mit dem Geist, den ich machen sollte. Ich denke, dass viele Leute Standardcode wie ↓ schreiben, deshalb verwende ich die automatische Codegenerierung durch Annotation Processor, um ihn zu vereinfachen.
class MyPreferences(context: Context) {
private val preferences = context.getSharedPreferences("MyPref", Context.MODE_PRIVATE)
private val tokenKey = "session_token"
fun getToken(): String? {
return preferences.getString(tokenKey, null))
}
fun setToken(value: String?) {
val editor = preferences.edit()
editor.putString(tokenKey, value)
editor.apply()
}
}
Wenn Sie diese Bibliothek verwenden, lautet der obige Code ↓.
@PrefClass
class MyPreferences {
@PrefField
val token: String?
}
Wenn sich der zu speichernde Wert erhöht, wird er möglicherweise von "einem Syndrom befreit, das ich kopiert und eingefügt habe, aber ich mache mir Sorgen, dass Änderungen weggelassen werden".
Requirement
Install
Fügen Sie gradle.build des zu verwendenden Moduls Folgendes hinzu. Vergessen Sie für Kotlin nicht, das Plugin anzuwenden: kotlin-kapt.
Java
dependencies {
implementation 'com.kazakago.preferhythm:preferhythm:x.x.x'
annotationProcessor 'com.kazakago.preferhythm:preferhythm-processor:x.x.x'
}
Kotlin
apply plugin: 'kotlin-kapt'
dependencies {
implementation 'com.kazakago.preferhythm:preferhythm:x.x.x'
kapt 'com.kazakago.preferhythm:preferhythm-processor:x.x.x'
}
Klicken Sie hier für die neueste Version → [](https://bintray.com/kazakago/maven/preferhythm/ _letzte Version)
Usage
Fügen Sie die Annotation @ PrefClass
zu der Klasse hinzu, die Sie in den Einstellungen modellieren möchten.
Fügen Sie der Feldvariablen, die Sie speichern möchten, die Annotation @ PrefField
hinzu, und die Modelleinstellung ist abgeschlossen.
@PrefClass //In der Modellklasse für SharedPreferences@Bitte PrefClass beifügen
class MyPreferences {
@PrefField //Für jeden Wert, den Sie speichern möchten@Bitte PrefField beifügen
int intValue = 3; //Der Standardwert, wenn kein Wert vorhanden ist, ist 3
@PrefField
boolean booleanValue; //Der Standardwert, wenn kein Wert vorhanden ist, ist false. Dies entspricht dem Standardwert des booleschen Typs.
@PrefField
String stringValue; //Der Standardwert, wenn kein Wert vorhanden ist, ist null
@NonNull
@PrefField
String nonNullStringValue = "foo"; //Der Standardwert, wenn kein Wert vorhanden ist"foo".. Ebenfalls@Es ist auch möglich, dies in der Methode widerzuspiegeln, die durch Hinzufügen der Annotation NonNull generiert wird.
}
Wenn Sie im obigen Status erstellen, wird automatisch eine Klasse mit dem Namen "Modellklassenname mit" @ PrefClass "+ Manager" generiert. Für jedes Feld mit "@ PrefField" wird automatisch ein Setter-Getter implementiert. Wenn Sie ihn also in dieser Methode festlegen und apply () anwenden, wird er gespeichert. nur das!
public class MainActivity extends Activity {
// `MyPreferencesManager`Wird automatisch generiert
private MyPreferencesManager myPreferencesManager = new MyPreferencesManager(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.print(myPreferencesManager.getIntValue()); // 3 (Standardwert)
myPreferencesManager.setIntValue(100); //Setze 100
myPreferencesManager.commit(); //Rufen Sie Commit an oder bewerben Sie sich wie in den freigegebenen Einstellungen, um Ihre Änderungen widerzuspiegeln.
System.out.print(myPreferencesManager.getIntValue()); //Es wird 100 gesetzt
myPreferencesManager.clear(); //Löschen Sie die in MyPreferencesManager enthaltenen Werte
myPreferencesManager.commit();
System.out.print(myPreferencesManager.getIntValue()); // 3 (Wird wieder der Standardwert sein)
}
}
Funktioniert mit Java und Kotlin im Repository Bitte beachten Sie dies, da es ein zu erledigendes Beispiel enthält
Important
Standardmäßig spiegelt der Name der freigegebenen Einstellungen den Klassennamen wider Wenn dies unpraktisch ist, können Sie es frei ändern, indem Sie die Anmerkungsparameter anpassen.
@PrefClass("YOUR_ORIGINAL_PREFERENCES_NAME")
class YourPreferencesClass {
...
}
In ähnlicher Weise spiegelt der Schlüsselname beim Speichern in freigegebenen Einstellungen standardmäßig auch den Feldvariablennamen wider. Dies kann auch durch Einfügen einer beliebigen Zeichenfolge in den Anmerkungsparameter geändert werden.
@PrefClass
class YourPreferencesClass {
@PrefField("YOUR_ORIGINAL_KEY_NAME")
int yourSaveValue;
}
Verwenden Sie diese Option, wenn Sie die bereits implementierte Shared Preferecne oder den Schlüssel übernehmen möchten.
Advanced
Da die automatisch generierte Klasse "Modellklassenname mit @ PrefClass
+ Manager" vererbt werden kann, ist es möglich, die willkürliche Verarbeitung durch Überschreiben der Methode zu unterbrechen.
public class CustomMyPreferencesManager extends MyPreferencesManager {
public CustomMyPreferencesManager(@NonNull Context context) {
super(context);
}
@Nullable
@Override
public String getStringValue() {
//Bitte tun Sie bei Bedarf etwas
// ex)Entschlüsselung
return super.getStringValue();
}
@NonNull
@Override
public MyPreferencesManager setStringValue(@Nullable String value) {
//Bitte tun Sie bei Bedarf etwas
// ex)Verschlüsselung
return super.setStringValue(value);
}
}
Kotlin Support
Es wird auch davon ausgegangen, dass diese Bibliothek von Kotlin verwendet wird, und es wird Code generiert, der die Syntax Nullable und NonNull berücksichtigt.
@PrefClass
class MyPreferences {
@PrefField
val intValue: Int = 3 //NonNull und Standardwert ist 3
@PrefField
val booleanValue: Boolean = false //NonNull und Standardwert ist false
@PrefField
val stringValue: String = "foo" //NonNull und der Standardwert ist`foo`
@PrefField
val nullableStringValue: String? = null //Nullable und Standardwert ist null
@PrefField
val nullableStringWithInitValue: String? = "bar" //Nullable und der Standardwert ist"bar"
}
Supported Type
Folgende Typen werden von dieser Bibliothek unterstützt Da es sich um eine Wrapper-Bibliothek für SharedPreferences handelt, sind die unterstützten Typen identisch. Weitere Informationen finden Sie unter Offizielle Dokumentation.
License
Unter MIT-Lizenz vertrieben
Recommended Posts