「アンドロイド」Shared Preferencesとマークし、短い情報を保存
1.緒論
サーバにログイン要求を送信すると、次のトークン情報が応答として受信されます.ログイン後,ユーザがアクセスする情報はヘッダにAccessTokenを付けて要求する.そのため、必要に応じてリポジトリに格納される可能性があります.{
"accessToken": "string",
"accessTokenExpireDate": 0,
"grantType": "string",
"refreshToken": "string"
}
ローカルストレージにデータを格納するには、2つの選択肢があります.ROMまたはShared Preferencesが見つかりました
ROOM持続ライブラリは、DBクラス、DBテーブル、DAOを作成した後、DBインスタンス+使用方法を作成する方法です.
Shared Preferencesは、キー値、メソッド(制御スライダの読み取り、書き込み、取得)を使用して、アクティブなデバイスからアクセスできるオブジェクト形式です.
3 Stringと1 Intは簡単な情報なのでSharedPreferencesを使うことにしました.
2.本題
1.実施特徴
1.単一トーンモードを使用すると、グローバルアクセスが可能になります。
ログイン後はAccessTokenを受信して持ち歩く必要があります.コメントリクエストやユーザー&注目ポイントクエリーに使用することを考慮します!
モノトーンのメリットとデメリットは以下の通りです.
<メリット>
1.オブジェクトを一度に作成して複数のクラスを共有する->メモリの浪費を回避し、他のオブジェクトと共有する
2.2回目の呼び出しから、オブジェクトのロード時間の短縮->パフォーマンスの向上
<短所>
1.悪用の場合、GC(Garbage Collector)でリソースを回収できない->メモリリソースの削減
2.単一色調のクラスにデータを入れすぎて複数のクラスが共有されている場合->マージも増加します
Shared Preferencesはメモリリソースを浪費する可能性があり、いくら簡単な情報でもグローバルな範囲ではあまり使用されない可能性があります.しかし、AccessTokenは、ほとんどのAPI呼び出しに使用されると予想されるため、このモードを共有クラスとして使用することができる.
2.アプリケーション共有クラスを作成します。
アクティブデバイスがShared Preferencesオブジェクトを使用してデータを格納する必要がある場合は、AライフサイクルのonCreate()の前に初期化する必要があります.したがって、SharedPreferences領域変数を持つTokenSharedPreferencesクラスは、まず共有クラスのグローバル変数Appとして初期化される.
グーグルで遊んだ時どこで見たか覚えてないけど….明らかに、Bという名前のクラスでは、SharedPreferencesを領域変数に設定し、Bを共有クラスに登録するコードがあります.単純なグローバルオブジェクトや変数ではなくShared Preferencesを持つ特別な方法
私のプロジェクトを例にとると、共有クラスアプリケーションはグローバルリソースの空間であり、トークン情報のみが登録されています.ただし、後でログインするかどうかなど、簡単な設定値が加わる場合があります.Appは、Appサブアイテムから直接データ値にアクセスするよりも、token_prefs.accessToken, App.login_prefs.login, App.setting.languageのように具体化されたクラスや地域変数は、エラーを減らす可能性があります.(いいえ...ははは)
App.ktpackage com.example.bangu
import android.app.Application
import com.example.bangu.login.data.TokenSharedPreferences
class App:Application() {
companion object{
lateinit var token_prefs : TokenSharedPreferences
}
override fun onCreate() {
token_prefs = TokenSharedPreferences(applicationContext)
super.onCreate()
}
}
SharedPreferencesオブジェクトが提供するputInt()やputString()などはset()に統一され、getInt()やgetString()などはget()に統一される.
次に、SharedPreferencesオブジェクトが提供する書き込み方法を使用し、変更をapply()またはcommit()メソッドに保存する必要があります.
apply()は、メモリ内のShared Preferencesオブジェクトをすぐに変更しますが、非同期書き込みディスクが更新されます.commit()を使用して、データをディスクに同期して書き込むこともできます.ただし、commit()は同期化されているので、プライマリスレッドでの呼び出しは避けてください.UIレンダリングは一時停止する場合があります.
トークン情報の格納は同期されているため,あまりメリットがないようでapply()を用いた.
TokenSharedPreferences.ktclass TokenSharedPreferences(context: Context) {
private val prefsFilename = "token_prefs"
private val key_accessToken = "accessToken"
private val key_accessTokenExpireDate = "accessTokenExpireDate"
private val key_grantType = "grantType"
private val key_refreshToken = "refreshToken"
private val prefs:SharedPreferences = context.getSharedPreferences(prefsFilename,0)
var accessToken: String?
get() = prefs.getString(key_accessToken,"")
set(value) = prefs.edit().putString(key_accessToken,value).apply()
var accessTokenExpireDate:Int
get() = prefs.getInt(key_accessTokenExpireDate,0)
set(value) = prefs.edit().putInt(key_accessTokenExpireDate,value).apply()
var grantType:String?
get() = prefs.getString(key_grantType,"")
set(value) = prefs.edit().putString(key_grantType,value).apply()
var refreshToken: String?
get() = prefs.getString(key_refreshToken,"")
set(value) = prefs.edit().putString(key_refreshToken,value).apply()
}
3.結論
最初はMVVM哲学(?)必要に応じて機能を実現する方法が分かりません.しかし今回はローカルデータストレージに関係しているのか、パズルを見つけやすいように感じたので、そんなに挿入しにくいさわやかさがありました.
参考資料
共有クラスに関連
https://uroa.tistory.com/43
モノトーンモード相関
https://tecoble.techcourse.co.kr/post/2020-11-07-singleton/
sharedPreferencesに関連
https://koohee.tistory.com/12
https://developer.android.com/training/data-storage/shared-preferences?hl=ko
Reference
この問題について(「アンドロイド」Shared Preferencesとマークし、短い情報を保存), 我々は、より多くの情報をここで見つけました
https://velog.io/@yongin01/OTT-리뷰-앱-만들기SharedPreferences로-토큰-간단한-정보-저장하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
{
"accessToken": "string",
"accessTokenExpireDate": 0,
"grantType": "string",
"refreshToken": "string"
}
1.実施特徴
1.単一トーンモードを使用すると、グローバルアクセスが可能になります。
ログイン後はAccessTokenを受信して持ち歩く必要があります.コメントリクエストやユーザー&注目ポイントクエリーに使用することを考慮します!
モノトーンのメリットとデメリットは以下の通りです.
<メリット>
1.オブジェクトを一度に作成して複数のクラスを共有する->メモリの浪費を回避し、他のオブジェクトと共有する
2.2回目の呼び出しから、オブジェクトのロード時間の短縮->パフォーマンスの向上
<短所>
1.悪用の場合、GC(Garbage Collector)でリソースを回収できない->メモリリソースの削減
2.単一色調のクラスにデータを入れすぎて複数のクラスが共有されている場合->マージも増加します
Shared Preferencesはメモリリソースを浪費する可能性があり、いくら簡単な情報でもグローバルな範囲ではあまり使用されない可能性があります.しかし、AccessTokenは、ほとんどのAPI呼び出しに使用されると予想されるため、このモードを共有クラスとして使用することができる.
2.アプリケーション共有クラスを作成します。
アクティブデバイスがShared Preferencesオブジェクトを使用してデータを格納する必要がある場合は、AライフサイクルのonCreate()の前に初期化する必要があります.したがって、SharedPreferences領域変数を持つTokenSharedPreferencesクラスは、まず共有クラスのグローバル変数Appとして初期化される.
グーグルで遊んだ時どこで見たか覚えてないけど….明らかに、Bという名前のクラスでは、SharedPreferencesを領域変数に設定し、Bを共有クラスに登録するコードがあります.単純なグローバルオブジェクトや変数ではなくShared Preferencesを持つ特別な方法
私のプロジェクトを例にとると、共有クラスアプリケーションはグローバルリソースの空間であり、トークン情報のみが登録されています.ただし、後でログインするかどうかなど、簡単な設定値が加わる場合があります.Appは、Appサブアイテムから直接データ値にアクセスするよりも、token_prefs.accessToken, App.login_prefs.login, App.setting.languageのように具体化されたクラスや地域変数は、エラーを減らす可能性があります.(いいえ...ははは)
App.kt
package com.example.bangu
import android.app.Application
import com.example.bangu.login.data.TokenSharedPreferences
class App:Application() {
companion object{
lateinit var token_prefs : TokenSharedPreferences
}
override fun onCreate() {
token_prefs = TokenSharedPreferences(applicationContext)
super.onCreate()
}
}
SharedPreferencesオブジェクトが提供するputInt()やputString()などはset()に統一され、getInt()やgetString()などはget()に統一される.次に、SharedPreferencesオブジェクトが提供する書き込み方法を使用し、変更をapply()またはcommit()メソッドに保存する必要があります.
apply()は、メモリ内のShared Preferencesオブジェクトをすぐに変更しますが、非同期書き込みディスクが更新されます.commit()を使用して、データをディスクに同期して書き込むこともできます.ただし、commit()は同期化されているので、プライマリスレッドでの呼び出しは避けてください.UIレンダリングは一時停止する場合があります.
トークン情報の格納は同期されているため,あまりメリットがないようでapply()を用いた.
TokenSharedPreferences.kt
class TokenSharedPreferences(context: Context) {
private val prefsFilename = "token_prefs"
private val key_accessToken = "accessToken"
private val key_accessTokenExpireDate = "accessTokenExpireDate"
private val key_grantType = "grantType"
private val key_refreshToken = "refreshToken"
private val prefs:SharedPreferences = context.getSharedPreferences(prefsFilename,0)
var accessToken: String?
get() = prefs.getString(key_accessToken,"")
set(value) = prefs.edit().putString(key_accessToken,value).apply()
var accessTokenExpireDate:Int
get() = prefs.getInt(key_accessTokenExpireDate,0)
set(value) = prefs.edit().putInt(key_accessTokenExpireDate,value).apply()
var grantType:String?
get() = prefs.getString(key_grantType,"")
set(value) = prefs.edit().putString(key_grantType,value).apply()
var refreshToken: String?
get() = prefs.getString(key_refreshToken,"")
set(value) = prefs.edit().putString(key_refreshToken,value).apply()
}
3.結論
最初はMVVM哲学(?)必要に応じて機能を実現する方法が分かりません.しかし今回はローカルデータストレージに関係しているのか、パズルを見つけやすいように感じたので、そんなに挿入しにくいさわやかさがありました.
参考資料
共有クラスに関連
https://uroa.tistory.com/43
モノトーンモード相関
https://tecoble.techcourse.co.kr/post/2020-11-07-singleton/
sharedPreferencesに関連
https://koohee.tistory.com/12
https://developer.android.com/training/data-storage/shared-preferences?hl=ko
Reference
この問題について(「アンドロイド」Shared Preferencesとマークし、短い情報を保存), 我々は、より多くの情報をここで見つけました
https://velog.io/@yongin01/OTT-리뷰-앱-만들기SharedPreferences로-토큰-간단한-정보-저장하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(「アンドロイド」Shared Preferencesとマークし、短い情報を保存), 我々は、より多くの情報をここで見つけました https://velog.io/@yongin01/OTT-리뷰-앱-만들기SharedPreferences로-토큰-간단한-정보-저장하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol