花粉乐分享平台宣传视频
> 华为资讯 > 华为资讯 > 鸿蒙编程 > 鸿蒙开发:处理动态权限不要再调用Slice类中的方法,避免APP闪退
鸿蒙开发:处理动态权限不要再调用Slice类中的方法,避免APP闪退
来源:码农科技
2022-08-29 12:33:39
617
管理
在之前,我为关注鸿蒙开发的初学者们讲解了关于高德地图关于位置权限的开通和测试,但发现自己在优化项目中的代码中也出现了一些小问题。比如在启动APP之后,首次进行权限的申请会导致APP的突然闪退,你不得不在手机桌面重新启动APP。 出现这些小问题,别看不起眼,在后面的功能持续完善时会影响我们开发的进度,前期需要进行更多时间梳理才行,后面的功能才能走的通。 一.为什么首次进行权限的选择,会导致APP突然闪退出手机界面? 出现这个现象,主要是由于我们自己还没有完全理解透“权限的动态申请流程”。 鸿蒙系统中申请动态权限的流程,主要是分为3步: 第一步,在config.json文件中声明所需要的权限,这些配置基本上我们不会出错,配置也很简单。 config.json文件,权限配置 第二步,通过查询接口和授权弹窗来动态实现权限的申请,比如ohos.app.Context.verifySelfPermission接口和canRequestPermission接口进行查询,requestPermissionFromUser则可以显示首次授权的弹窗。 动态实现权限的申请 第三步,requestPermissionFromUser首次授权的弹窗需要有上下文给出反馈,而回调函数onRequestPermissionsFromUserResult可以进行接收。 接收申请权限的结果,并反馈结果 刚好,我测试的APP出现闪退,主要是出现在第三步,因为我在其条件判断语句中进行了MyAbilitySlice类的相关方法的调用。 调用AbilitySlice中的方法,会导致APP的闪退 其实,我加这个方法,主要是之前对功能需求在流程上产生了更严谨的想法,最终使APP在测试时出现闪退现象。实际上,我们根本没必要在第三步中调用AbilitySlice类的任何子方法,因为onRequestPermissionsFromUserResult这个回调函数只是接收结果,第二步的查询接口才是整个权限申请流程的主线。 二.不通过回调函数去调用AbilitySlice类的任何方法,只因Intent做开头,AbilitySlice做导航。 如果我们都长期接触鸿蒙相关的项目,你会发现项目工程结构中AbilitySlice和Ability都有onStart这个方法,且这个方法还要进行穿值,且第一个传递数据的对象为Intent onStart方法,穿值对象为Intel 我们再看下Intent这个类在官方Java API文档中的含义: Intent类 从官方的API文档中,我们可以得知Intent这个类是系统的基本通信组件,只有此对象的正常启动,AbilitySlice中其它的子方法才能紧随其后才可运行。 一个Ability(或Page)可以拥有多个AbilitySlice 至于AbilitySlice这个类,它拥有完整的生命周期,且属于APP软件的前台,相当于前端,让一个Ability(或Page)可以拥有多个AbilitySlice,可让更多业务代码在AbilitySlice中进行。APP中的程序从启动到自动销毁,现在也是在更多的AbilitySlice中去实现,我们自己的Ability文件最好还是不要轻易去调用AbilitySlice中的任意方法,以免程序在流程上出现更多的错误。 结语: 希望鸿蒙开发的初学者们在实际的开发过程中能够放慢编程开发的节奏,先搞清楚程序实现的具体思路,让开发和测试环节可以化繁为简。 毕竟,改Bug很耗精力和时间,不然会像我的APP在测试权限时会出现软件闪退的现象。其实,这也是考验我们对相关程序在实现原理上的理解,不要让程序流程的实现变得越来越复杂,以免继续给自己挖大坑。

花粉社群VIP加油站

4
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与花粉乐分享无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非花粉乐分享)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@hflfx.com
关于作者
(Array)
文章
455
主题
0
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行
随手拍
54个圈友 0个话题
华为手机随手拍,记录生活点滴之美好
华为P30pro
51个圈友 0个话题
这里是华为P30pro手机交流圈,欢迎华为P30pro用户进群交流
体验官
60个圈友 2个话题
华为花粉体验官,体验官专属的交流群
登录后查看您创建的圈子
登录后查看您创建的圈子
所有圈子
杭州互联网违法和不良信息举报平台 网络110报警服务 浙ICP备17046585号
4
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索