91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Android實現關機后數據不會丟失問題

發布時間:2021-09-27 11:27:07 來源:億速云 閱讀:112 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關如何使用Android實現關機后數據不會丟失問題,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

要實現關機后數據也不會丟失,需要使用到 AndroidViewModel,SaveStateHandle 和 SharePreferences 要達到的目的就是將數據保存成這個亞子

就不會出現app在異常閃退或者關機后數據的丟失了注意在使用SaveStateHandle和binding的時候需要在gradle里面設置一波

數據類

package com.example.applicationtest04;import android.app.Application;import android.content.Context;import android.content.SharedPreferences;import androidx.annotation.NonNull;import androidx.lifecycle.AndroidViewModel;import androidx.lifecycle.LiveData;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.SavedStateHandle;public class MyVIewModel extends AndroidViewModel { SavedStateHandle handle; //聲明savedstatehandle 類型 String shpName = getApplication().getResources().getString(R.string.shp_name); String key = getApplication().getResources().getString(R.string.key); public MyVIewModel(@NonNull Application application, SavedStateHandle handle) {  super(application);  this.handle = handle;  if(!handle.contains(key)){   load();  } } public LiveData<Integer> getNumber(){  return handle.getLiveData(key); } public void load(){  SharedPreferences shp = getApplication().getSharedPreferences(shpName, Context.MODE_PRIVATE);  int x = shp.getInt(key,0);  handle.set(key,x); } public void save(){  SharedPreferences shp = getApplication().getSharedPreferences(shpName,Context.MODE_PRIVATE);  SharedPreferences.Editor editor = shp.edit();  editor.putInt(key,getNumber().getValue());  editor.apply(); } public void add(int x){  handle.set(key,getNumber().getValue()+x); }}//這段代碼里面有幾個重要的點就是在使用handle的時候要注意使用的數據是liveData

Mainactive類

package com.example.applicationtest04;import androidx.appcompat.app.AppCompatActivity;import androidx.databinding.DataBindingUtil;import androidx.lifecycle.SavedStateVMFactory;import androidx.lifecycle.ViewModelProvider;import androidx.lifecycle.ViewModelProviders;import android.os.Bundle;import com.example.applicationtest04.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity { MyVIewModel myVIewModel; ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  binding = DataBindingUtil.setContentView(this,R.layout.activity_main);  this.myVIewModel = ViewModelProviders.of(this,new SavedStateVMFactory(this)).get(MyVIewModel.class);  binding.setData(myVIewModel);  binding.setLifecycleOwner(this); } @Override protected void onPause() {  super.onPause();  myVIewModel.save(); }}//這段代碼的重點就是使用onPause這個聲明周期的函數來調用save()函數

布局xml

<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data>  <variable   name="Data"   type="com.example.applicationtest04.MyVIewModel" /> </data> <androidx.constraintlayout.widget.ConstraintLayout  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context=".MainActivity">  <TextView   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="@{String.valueOf(Data.getNumber())}"   android:textColor="@color/colorPrimaryDark"   android:textSize="36sp"   app:layout_constraintBottom_toBottomOf="parent"   app:layout_constraintHorizontal_bias="0.497"   app:layout_constraintLeft_toLeftOf="parent"   app:layout_constraintRight_toRightOf="parent"   app:layout_constraintTop_toTopOf="parent"   app:layout_constraintVertical_bias="0.324" />  <Button   android:id="@+id/button"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_marginStart="8dp"   android:layout_marginTop="8dp"   android:layout_marginEnd="8dp"   android:layout_marginBottom="8dp"   android:text="@string/buttonPlus"   android:onClick="@{()->Data.add(1)}"   app:layout_constraintBottom_toBottomOf="parent"   app:layout_constraintEnd_toEndOf="parent"   app:layout_constraintHorizontal_bias="0.182"   app:layout_constraintStart_toStartOf="parent"   app:layout_constraintTop_toTopOf="parent"   app:layout_constraintVertical_bias="0.499" />  <Button   android:id="@+id/button2"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_marginStart="8dp"   android:layout_marginTop="8dp"   android:layout_marginEnd="8dp"   android:layout_marginBottom="8dp"   android:text="@string/buttonSub"   android:onClick="@{()->Data.add(-1)}"   app:layout_constraintBottom_toBottomOf="parent"   app:layout_constraintEnd_toEndOf="parent"   app:layout_constraintHorizontal_bias="0.804"   app:layout_constraintStart_toStartOf="parent"   app:layout_constraintTop_toTopOf="parent"   app:layout_constraintVertical_bias="0.499" /> </androidx.constraintlayout.widget.ConstraintLayout></layout>

關于“如何使用Android實現關機后數據不會丟失問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

神农架林区| 循化| 内黄县| 东至县| 巧家县| 八宿县| 滁州市| 泰兴市| 合肥市| 芷江| 洛南县| 白沙| 新化县| 永吉县| 安康市| 永安市| 屯昌县| 京山县| 柯坪县| 盱眙县| 收藏| 宁德市| 公主岭市| 大厂| 富源县| 怀远县| 乐至县| 台中市| 宿州市| 长汀县| 濉溪县| 响水县| 垣曲县| 大同县| 锦州市| 杭锦旗| 伽师县| 聂拉木县| 天峨县| 古田县| 临城县|