SPHelper.ets
4.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import data_preferences from '@ohos.data.preferences';
import { Logger } from './Logger';
import { JSON } from '@kit.ArkTS';
const TAG = 'SPHelper'
const logEnable = false
/**
* sp存储,单条数据,value<1k;业务数据超过1k的,建议使用KVStoreHelper
*/
export class SPHelper {
private static context: Context;
private static spFilename: string = '__SPHelper';
static init(context: Context) {
SPHelper.context = context;
if (context) {
Logger.debug(TAG, '初始化context')
}
}
static setSpFilename(spFilename: string) {
SPHelper.spFilename = spFilename;
Logger.debug(TAG, '设置文件名: ' + spFilename)
}
// 静态属性
static default: SPHelper = new SPHelper();
// 私有构造函数
private constructor() {
}
private async getVideoPreferences(): Promise<data_preferences.Preferences> {
let preferences: data_preferences.Preferences = await data_preferences.getPreferences(SPHelper.context, SPHelper.spFilename);
return preferences;
}
private getVideoPreferencesSync(): data_preferences.Preferences {
let options: data_preferences.Options = { name: SPHelper.spFilename };
let preferences: data_preferences.Preferences = data_preferences.getPreferencesSync(SPHelper.context, options);
return preferences;
}
async save(key: string, value: data_preferences.ValueType) {
try {
const preferences: data_preferences.Preferences = await this.getVideoPreferences();
await preferences.put(key, value)
await preferences.flush()
if (logEnable) {
Logger.debug(TAG, '保存 key: ' + key + " value => " + value)
}
} catch (e) {
Logger.error(TAG, '保存 key: ' + key + " value => " + value + " 报错:" + JSON.stringify(e))
}
}
saveSync(key: string, value: data_preferences.ValueType) {
const preferences: data_preferences.Preferences = this.getVideoPreferencesSync();
preferences.putSync(key, value)
preferences.flush().then(() => {
if (logEnable) {
Logger.debug(TAG, 'sync保存 key: ' + key + " value => " + value)
}
}).catch((error: object) => {
Logger.error(TAG, 'sync保存 key: ' + key + " value => " + value + " 报错:" + JSON.stringify(error))
});
}
async get(key: string, defValue: data_preferences.ValueType): Promise<data_preferences.ValueType> {
const preferences: data_preferences.Preferences = await this.getVideoPreferences();
const data = await preferences.get(key, defValue);
if (logEnable) {
Logger.debug(TAG, '获取 key: ' + key + " value => " + data + "| 默认值:" + defValue)
}
return data
}
getSync(key: string, defValue: data_preferences.ValueType): data_preferences.ValueType {
const preferences: data_preferences.Preferences = this.getVideoPreferencesSync();
const data = preferences.getSync(key, defValue);
if (logEnable) {
Logger.debug(TAG, 'sync获取 key: ' + key + " value => " + data + "| 默认值:" + defValue)
}
return data
}
async has(key: string): Promise<boolean> {
const preferences: data_preferences.Preferences = await this.getVideoPreferences();
const data = await preferences.has(key);
if (logEnable) {
Logger.debug(TAG, 'has key: ' + key + ' => ' + data)
}
return data
}
hasSync(key: string): boolean {
const preferences: data_preferences.Preferences = this.getVideoPreferencesSync();
const data = preferences.hasSync(key);
if (logEnable) {
Logger.debug(TAG, 'synchas key: ' + key + ' => ' + data)
}
return data
}
async delete(key: string) {
const preferences: data_preferences.Preferences = await this.getVideoPreferences();
preferences.delete(key).then(async () => {
await preferences.flush();
if (logEnable) {
Logger.debug(TAG, '删除 key: ' + key)
}
}).catch((err: Error) => {
Logger.error(TAG, '删除 key失败:' + JSON.stringify(err));
});
}
deleteSync(key: string) {
const preferences: data_preferences.Preferences = this.getVideoPreferencesSync();
preferences.deleteSync(key)
preferences.flush().then(() => {
if (logEnable) {
Logger.debug(TAG, 'sync删除 key: ' + key)
}
}).catch((error: object) => {
Logger.error(TAG, 'sync删除 key失败:' + JSON.stringify(error));
});
}
async clearSync() {
this.getVideoPreferences().then(async (preferences: data_preferences.Preferences) => {
preferences.clearSync()
await preferences.flush()
Logger.debug(TAG, 'sync清除所有数据');
}).catch((err: Error) => {
Logger.error(TAG, 'sync清除所有数据,失败:' + JSON.stringify(err));
});
}
public getPreferences() {
let preferences = data_preferences.getPreferences(SPHelper.context, SPHelper.spFilename);
return preferences;
}
}