Ability概述
Ability是一种包含用户界面的应用组件,主要用于和用户进行交互。Ability也是系统调度的单元,为应用提供窗口在其中绘制界面。
每一个Ability实例,都对应于一个最近任务列表中的任务。
一个应用可以有一个Ability,也可以有多个Ability,如图1-1所示。例如浏览器应用可以通过一个Ability结合多页面的形式让用户进行的搜索和浏览内容;而聊天应用增加一个“外卖功能”的场景,则可以将聊天应用中“外卖功能”的内容独立为一个Ability,当用户打开聊天应用的“外卖功能”,查看外卖订单详情,此时有新的聊天消息,即可以通过最近任务列表切换回到聊天窗口进行继续聊天对话。
页面跳转和参数接收
在使用页面路由之前,需要先导入router模块,如下代码所示。
import router from '@ohos.router';
跳转方式
方式一:通过调用router.push()方法,跳转到Ability内的指定页面。
每调用一次router.push()方法,均会新建一个页面。默认情况下,页面栈数量会加1,页面栈支持的最大页面数量为32。
当页面栈数量较大或者超过32时,可以通过调用router.clear()方法清除页面栈中的所有历史页面,仅保留当前页面作为栈顶页面。
如:
router.push({
url: 'pages/Second',
params: {
src: 'Index页面传来的数据',
}
})
方式二:router.push(),分单实例模式和标准模式。在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近的同url页面会被移动到栈顶,移动后的页面为新建页,原来的页面仍然存在栈中,页面栈数量不变;如果目标页面的url在页面栈中不存在同url页面,按标准模式跳转,页面栈数量会加1。
router.push({
url: 'pages/Second',
params: {
src: 'Index页面传来的数据',
}
}, router.RouterMode.Single)
方式三:router.replace(),即使用新的页面替换当前页面,并销毁被替换的当前页面,页面栈数量不变。
router.replace({
url: 'pages/Second',
params: {
src: 'Index页面传来的数据',
}
})
方式四:router.replace(),分单实例模式和标准模式。
router.replace({
url: 'pages/Second',
params: {
src: 'Index页面传来的数据',
}
}, router.RouterMode.Single)
页面返回:
router.back()
调用router.back()返回的目标页面需要在页面栈中存在才能正常跳转。
例如调用router.push()方法跳转到Second页面,在Second页面可以通过调用router.back()方法返回到上一个页面。
例如调用router.clear()方法清空了页面栈中所有历史页面,仅保留当前页面,此时则无法通过调用router.back()方法返回到上一个页面。
返回上一个页面:
router.back()
返回到指定页面:
router.back({ url: 'pages/index' })
![](https://i-blog.csdnimg.cn/blog_migrate/3bd86e6dd5c8a083510dfdf462d3018e.png)
数据请求模块
首先需要导入http 模块
import http from'@ohos.net.http';
配置权限
在config.json的module模块里配置,示例如下。
配置网络权限
![](https://i-blog.csdnimg.cn/blog_migrate/6d834b936b1fb857cb541001bc6f80dd.png)
http.createHttp
createHttp(): HttpRequest
创建一个http,里面包括发起请求、中断请求、订阅/取消订阅HTTP Response Header 事件。每一个HttpRequest对象对应一个Http请求。如需发起多个Http请求,须为每个Http请求创建对应HttpRequest对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
类型 | 说明 |
HttpRequest | 返回一个HttpRequest对象,里面包括request、destroy、on和off方法。 |
HttpRequest
http请求任务。在调用HttpRequest的方法前,需要先通过createHttp()创建一个任务。
request
request(url: string, callback: AsyncCallback<HttpResponse>):void
根据URL地址,发起HTTP网络请求,使用callback方式作为异步方法。
根据URL地址,发起HTTP网络请求,使用callback方式作为异步方法。
需要权限:ohos.permission.INTERNET
参数:
参数名 | 类型 | 必填 | 说明 |
url | string | 是 | 发起网络请求的URL地址。 |
callback | AsyncCallback<HttpResponse> | 是 | 回调函数。当成功发起http请求时,err为undefined,data为获取到的HttpResponse;否则err为错误对象。 |
示例:
httpRequest.request("EXAMPLE_URL", (err, data) => {
if (!err) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + data.cookies); // 8+
} else {
console.info('error:' + JSON.stringify(err));
}
});
弹窗模块
首先需要导入prompt模块
![](https://i-blog.csdnimg.cn/blog_migrate/f8a31303133c1ce0342ca3177ac4a9b6.png)
主要使用的是prompt.showToast()方法,作用是可以在屏幕上弹出提示信息。message是弹出的消息,而duration是弹出的时间,单位是毫秒。1000是1秒,则2000是2秒。
![](https://i-blog.csdnimg.cn/blog_migrate/f56e290fa3035029054efc3ff37e2ee3.png)
绑定事件
用on加事件名称,不同的组件有不同的事件类型。通用事件如下:
点击事件
![](https://i-blog.csdnimg.cn/blog_migrate/974fced00eaa7f53fb31f0d759ef0959.png)
触摸事件
![](https://i-blog.csdnimg.cn/blog_migrate/98ece09ae696efbbbcab87c7669447b0.png)
挂载卸载事件
![](https://i-blog.csdnimg.cn/blog_migrate/eec2151d57113abd39d035a613767d38.png)
拖拽事件
![](https://i-blog.csdnimg.cn/blog_migrate/4386e19eed58393284955963175296bb.png)