首选项 - 比特日记
首选项
用户首选项
复制成功
1
2
3
4
5
1key 1MB, value 16MB
2存储系统变量,如主题、字体、用户个性化设置
3系统一次性读取全部存储值,默认操作内存,数据都在内存中
4
5异步存储,需要调用flush存到硬盘
key 1MB, value 16MB
存储系统变量,如主题、字体、用户个性化设置
系统一次性读取全部存储值,默认操作内存,数据都在内存中
异步存储,需要调用flush存到硬盘
复制成功
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
1import { preferences } from '@kit.ArkData'
2import { BusinessError } from '@kit.BasicServicesKit'
3
4export class PreferencesUtil {
5 private dataPreferences: preferences.Preferences | null = null
6
7 /**
8 * 初始化
9 * @param context
10 */
11 init(context: Context, storageName: string) {
12 let options: preferences.Options = { name: storageName }
13 this.dataPreferences = preferences.getPreferencesSync(context, options)
14
15 // on就是给数据设置监听效果
16 let observer = (key: string) => {
17 console.log('key:' + key + ', changed')
18 // this.dataPreferences as preferences.Preferences
19 this.dataPreferences?.flush((err: BusinessError) => {
20 if (err) {
21 console.log(`failed to flush, ${err.name}-${err.message}`)
22 } else {
23 console.log('flush success')
24 }
25 })
26 }
27 this.dataPreferences.on('change', observer)
28
29 }
30
31 insertData(key: string, value: string) {
32 if (this.dataPreferences?.hasSync(key)) {
33 console.log('this preferences key is contained')
34 } else {
35 this.dataPreferences?.putSync(key, value)
36 console.log('this preferences add success')
37 }
38 }
39
40 async readData(key: string, value?: string) {
41 let val = await this.dataPreferences?.getSync(key, value ? value : 'default')
42 console.log('this preferences get value is:' + val)
43 return val
44 }
45
46 deleteData(key: string) {
47 this.dataPreferences?.delete(key, (err: BusinessError, rows) => {
48 if (err) {
49 console.log(`failed to delete, ${err.name}-${err.message}`)
50 } else {
51 console.log('delete success')
52 }
53 })
54 }
55}
56
57const preferencesUtil = new PreferencesUtil()
58
59export default preferencesUtil
import { preferences } from '@kit.ArkData'
import { BusinessError } from '@kit.BasicServicesKit'
export class PreferencesUtil {
private dataPreferences: preferences.Preferences | null = null
/**
* 初始化
* @param context
*/
init(context: Context, storageName: string) {
let options: preferences.Options = { name: storageName }
this.dataPreferences = preferences.getPreferencesSync(context, options)
// on就是给数据设置监听效果
let observer = (key: string) => {
console.log('key:' + key + ', changed')
// this.dataPreferences as preferences.Preferences
this.dataPreferences?.flush((err: BusinessError) => {
if (err) {
console.log(`failed to flush, ${err.name}-${err.message}`)
} else {
console.log('flush success')
}
})
}
this.dataPreferences.on('change', observer)
}
insertData(key: string, value: string) {
if (this.dataPreferences?.hasSync(key)) {
console.log('this preferences key is contained')
} else {
this.dataPreferences?.putSync(key, value)
console.log('this preferences add success')
}
}
async readData(key: string, value?: string) {
let val = await this.dataPreferences?.getSync(key, value ? value : 'default')
console.log('this preferences get value is:' + val)
return val
}
deleteData(key: string) {
this.dataPreferences?.delete(key, (err: BusinessError, rows) => {
if (err) {
console.log(`failed to delete, ${err.name}-${err.message}`)
} else {
console.log('delete success')
}
})
}
}
const preferencesUtil = new PreferencesUtil()
export default preferencesUtil
复制成功
1
2
3
4
5
6
7
8
9
10
11
12
13
1Button('设置主题').onClick((event: ClickEvent) => {
2 preferencesUtil.insertData('theme', 'orange')
3})
4
5Button('获取主题').onClick(async (event: ClickEvent) => {
6 const theme = await preferencesUtil.readData('theme', 'blue')
7 console.log('get theme:' + theme)
8})
9
10Button('删除主题').onClick(async (event: ClickEvent) => {
11 const theme = await preferencesUtil.deleteData('theme')
12 console.log('detele theme:' + theme)
13})
Button('设置主题').onClick((event: ClickEvent) => {
preferencesUtil.insertData('theme', 'orange')
})
Button('获取主题').onClick(async (event: ClickEvent) => {
const theme = await preferencesUtil.readData('theme', 'blue')
console.log('get theme:' + theme)
})
Button('删除主题').onClick(async (event: ClickEvent) => {
const theme = await preferencesUtil.deleteData('theme')
console.log('detele theme:' + theme)
})
复制成功
1
2
1this preferences key is contained
2this preferences get value is:pink
this preferences key is contained
this preferences get value is:pink
初始化
复制成功
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
1import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
2import { hilog } from '@kit.PerformanceAnalysisKit';
3import { window } from '@kit.ArkUI';
4import { cardDBUtils } from '../utils/CardDBUtils';
5import preferencesUtil from '../utils/PreferencesUtils';
6import kvStore from '../utils/KVStore';
7
8const DOMAIN = 0x0000;
9
10export default class EntryAbility extends UIAbility {
11 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
12 this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
13 hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
14 }
15
16 onDestroy(): void {
17 hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy');
18 }
19
20 onWindowStageCreate(windowStage: window.WindowStage): void {
21 // 加载数据库
22 cardDBUtils.initCardDB(this.context, 'goodcard')
23 preferencesUtil.init(this.context, 'goodMail')
24 // preferencesUtil.insertData('theme', 'pink')
25 kvStore.init(this.context)
26....
import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import { cardDBUtils } from '../utils/CardDBUtils';
import preferencesUtil from '../utils/PreferencesUtils';
import kvStore from '../utils/KVStore';
const DOMAIN = 0x0000;
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
}
onDestroy(): void {
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy');
}
onWindowStageCreate(windowStage: window.WindowStage): void {
// 加载数据库
cardDBUtils.initCardDB(this.context, 'goodcard')
preferencesUtil.init(this.context, 'goodMail')
// preferencesUtil.insertData('theme', 'pink')
kvStore.init(this.context)
....
Copyright ©2010-2022 比特日记 All Rights Reserved.
Powered By 可尔物语
浙ICP备11005866号-12