赞
踩
UI 线程
。以上操作都在主线程操作,会造成阻塞导致页面卡死!
InnerEvent
事件或者Runnable
任务投递到其他的线程进行处理;使用EventHandler需要创建EventHandler的子类,并重写processEvent
方法来处理事件。EventRunner的工作模式可以分为托管模式和手动模式。两种模式是在调用EventRunner的create()方法时,通过选择不同的参数来实现的。默认为托管模式。
EventRunner runner = EventRunner.create(false); // create()的参数是true或无参数时,为托管模式
private class MyEventHandler extends EventHandler {
…
@Override
protected void processEvent(InnerEvent event) {
super.processEvent(event);
// 从 InnerEvent 对象中取出信息并处理
…
}
}
EventRunner runner = EventRunner.create(); // EventRunner 默认为托管模式
myHandler.sendEvent(event1, 0, EventHandler.Priority.IMMEDIATE);
getGlobalTaskDispatcher(TaskPriority.DEFAULT).syncDispatch(new Runnable() {
@Override
public void run() {
// 执行操作
…
getUITaskDispatcher().asyncDispatch(new Runnable() {
@Override
public void run() {
// 更新 UI
…
}
}
}
}
syncDispatch():同步派发任务。派发任务并在当前线程等待任务执行完成。在返回前,当前线程会被阻塞。如果使用不当,将会导致死锁。
asyncDispatch():异步派发任务。派发任务,并立即返回,返回值是一个可用于取消任务的接口。
delayDispatch():异步延迟派发任务。异步执行,函数立即返回,内部会在延时指定时间后将任务派发到相应队列中。延时时间参数仅代表在这段时间以后任务分发器会将任务加入到队列中,任务的实际执行时间可能晚于这个时间。
group():表示成组派发任务,且该组任务之间有一定的联系。
对象关系映射 (Object Relational Mapping, ORM) 数据库框架屏蔽了底层SQLite数据库的SQL操作,针对实体和关系提供了增删改查等面向对象接口,支持以操作对象的形式来操作数据库。
// context 入参类型为 ohos.app.Context
DatabaseHelper databaseHelper = new DatabaseHelper(context);
// fileName 表示文件名,其取值不能为空,也不能包含路径
String fileName = "name";
Preferences preferences = databaseHelper.getPreferences(fileName);
int value = preferences.getInt("intKey", 0);
preferences.putInt("intKey", 3);
preferences.putString("StringKey", "String value");
preferences.flush();
preferences.putInt("intKey", 3);
preferences.putString("StringKey", "String value");
preferences.flushSync();
多设备协同时,处理数据和文件需要做到:
HarmonyOS 基于分布式软总线提供了去中心化的分布式数据服务和分布式文件服务。
KvManagerConfig config = new KvManagerConfig(context);
KvManager kvManager = KvManagerFactory.getInstance().createKvManager(config);
Options CREATE = new Options();
CREATE.setCreateIfMissing(true).setEncrypt(false).setKvStoreType(KvStoreType.SINGLE_VERSION);
SingleKvStore singleKvStore = kvManager.getKvStore(CREATE, "storeID");
File distDir = context.getDistributedDir();
String filePath = distDir + File.separator + "hello.txt";
FileWriter fileWriter = new FileWriter(filePath, true);
fileWriter.write("Hello World");
fileWriter.close();
- 设备2上的应用A通过Context.getDistributedDir()接口获取分布式目录
- 设备2上的应用A读取文件
```java
FileReader fileReader = new FileReader(filePath);
char[] buffer = new char[1024];
fileReader.read(buffer);
fileReader.close();
System.out.println(buffer);
讲述了HarmonyOS线程管理的方式和场景,帮助开发者了解如何通过多线程的方式提高应用运行效能。还介绍了常用的数据存储和管理方式,包括关系型数据库、轻量级偏好数据库等,开发过程中可以根据业务的情况选择最合适的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。