网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
let context = featureAbility.getContext();
Stage
Stage 模型中包含多种 Context,比较常用的有 AbilityContext 和在 eTS 页面中访问 Context。
AbilityContext
Stage 模型下,每个 Ability 中都包含了一个 Context 属性:
在继承 Ability 的类中通过 this.context 就可以获取 AbilityContext,从而操作 Ability 的方法(如 startAbility、connectAbility 等)
import Ability from ‘@ohos.application.Ability’
export default class MainAbility extends Ability {
onCreate(want, launchParam) {
this.context.requestPermissionsFromUser(PERMISSIONS)
}
onWindowStageCreate(windowStage) {
let context = this.context;
}
…
};
在 eTS 页面中访问 Context:
// 获取当前component关联的Context
let context = getContext(this) as any
启动 Ability
FA:
featureAbility.startAbility({
want: {
bundleName: ‘com.haoc.distributevideoplayer’,
abilityName: ‘com.haoc.distributevideoplayer.MainAbility’,
deviceId: deviceId,
parameters: {
isFA: ‘FA’
}
}
})
Stage:
context.startAbility({
bundleName: ‘com.haoc.distributevideoplayer’,
abilityName: ‘EntryAbility’,
deviceId: deviceId,
parameters: {
isFA: ‘FA’
}
})
①Stage 模型不再使用 featureAbility 接口,而需要先获取当前 Ability 的上下文,再由 AbilityContext 调用 startAbility 方法。
②相比 FA 模型少了一对{}括号。
③MainAbility 改名为 EntryAbility,且 abilityName 不再是由 package + Ability name 组成。
结语
由于开发时部分接口在 API9 以上才提供,所以需要将应用 API 升级到 9。
但其实 API9 也提供了 FA 模型,只需要在 API8 的基础上进行小部分修改即可,那笔者为何还花费大量精力去折腾 Stage 模型呢?
一个是想体验一下这两者在开发上的差别,另一个是未来将不再主推 FA 模型,现在学习的成本没有以后的成本高。
笔者在开发时还发现许多接口将被废弃,例如 Ability,将会用 UIAbility 代替,不过接口基本上不会有很大改变,都是改个名字、加个参数之类。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
sdn.net/topics/618636735)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!