专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

onActivityResult已废弃,快来看看更好用的Ac

  大家更新了SDK后,应该都发现了之前用的很多的startActivityForResult和onActivityResult方法已经声明已废弃了,在查看源码后,我们可以看到onActivityResult方法上声明了Deprecated,建议我们使用ActivityResultAPI来代替{inheritDoc}deprecatedThismethodhasbeendeprecatedinfavorofusingtheActivityResultAPIwhichbringsincreasedtypesafetyviaan{linkActivityResultContract}andtheprebuiltcontractsforcommonintentsavailablein{linkandroidx。activity。result。contract。ActivityResultContracts},provideshooksfortesting,andallowreceivingresultsinseparate,testableclassesindependentfromyouractivity。Use{linkregisterForActivityResult(ActivityResultContract,ActivityResultCallback)}passingina{linkStartActivityForResult}objectforthe{linkActivityResultContract}。OverrideDeprecatedpublicvoidstartActivityForResult(SuppressLint(UnknownNullness)Intentintent,intrequestCode){super。startActivityForResult(intent,requestCode);}{inheritDoc}deprecatedThismethodhasbeendeprecatedinfavorofusingtheActivityResultAPIwhichbringsincreasedtypesafetyviaan{linkActivityResultContract}andtheprebuiltcontractsforcommonintentsavailablein{linkandroidx。activity。result。contract。ActivityResultContracts},provideshooksfortesting,andallowreceivingresultsinseparate,testableclassesindependentfromyouractivity。Use{linkregisterForActivityResult(ActivityResultContract,ActivityResultCallback)}withtheappropriate{linkActivityResultContract}andhandlingtheresultinthe{linkActivityResultCallbackonActivityResult(Object)callback}。CallSuperOverrideDeprecatedprotectedvoidonActivityResult(intrequestCode,intresultCode,NullableIntentdata){if(!mActivityResultRegistry。dispatchResult(requestCode,resultCode,data)){super。onActivityResult(requestCode,resultCode,data);}}
  我们可以直接使用registerForActivityResult来代替startActivityForResultlateinitvaractivityResultLauncher:ActivityResultLauncherIntentoverridefunonCreate(savedInstanceState:Bundle?){super。onCreate(savedInstanceState)activityResultLauncherregisterForActivityResult(ActivityResultContracts。StartActivityForResult()){处理回调}跳转页面activityResultLauncher。launch(Intent(this,SecondActivity::class。java))}
  但是这种方法有个弊端,如果我们有多个页面跳转的话,我们无法在同一个activityResultLauncher的回调中判断是来自哪一个的回调,因为缺少了requestCode,这时候我们只能通过注册多个来解决这个问题,这样不是比之前更麻烦了么,有没有更好的办法呢?NonNullOverridepublicfinalI,OActivityResultLauncherIregisterForActivityResult(NonNullfinalActivityResultContractI,Ocontract,NonNullfinalActivityResultRegistryregistry,NonNullfinalActivityResultCallbackOcallback){returnregistry。register(activityrqmNextLocalRequestCode。getAndIncrement(),this,contract,callback);}NonNullOverridepublicfinalI,OActivityResultLauncherIregisterForActivityResult(NonNullActivityResultContractI,Ocontract,NonNullActivityResultCallbackOcallback){returnregisterForActivityResult(contract,mActivityResultRegistry,callback);}
  我们继续看源码发现,registerForActivityResult其实是调用ActivityResultRegistry来注册的,而ActivityResultRegistry我们是可以直接获取到的,我们可以自己封装一下privatevalrequestCodeAtomicInteger()privatevalkey:Stringget()activityrq{requestCode。getAndIncrement()}valactivityContractsActivityResultContracts。StartActivityForResult()suspendfunI,OComponentActivity。launch(contract:ActivityResultContractI,O,input:I):O{varcaller:ActivityResultLauncherI?nullreturnsuspendCancellableCoroutineO{continuationcalleractivityResultRegistry。register(key,contract){continuation。resume(it)}。apply{launch(input)}}。also{caller?。unregister()callernull}}funI,OComponentActivity。launch(contract:ActivityResultContractI,O,input:I,output:ActivityResultCallbackO){varcaller:ActivityResultLauncherI?nullcalleractivityResultRegistry。register(key,contract){output。onActivityResult(it)caller?。unregister()callernull}。apply{launch(input)}}启动activity获取返回值funComponentActivity。launchActivityForResult(intent:Intent,output:ActivityResultCallback)launch(activityContracts,intent,output)
  使用方法如下正常使用launchActivityForResult(Intent(this,SecondActivity::class。java)){处理回调}在协程中使用lifecycleScope。launch{valactivityResultlaunch(contractactivityContracts,inputIntent(thisMainActivity,SecondActivity::class。java))处理回调}
  看起来是不是简洁很多了,而且代码逻辑也清晰不少。
  ActivityResultContracts中,除了StartActivityForResult外,还内置了一些常用的RequestPermission:单个权限请求RequestMultiplePermissions:多个权限请求TakePicturePreview:拍照预览TakePicture:拍照TakeVideo:摄像PickContact:选择联系人GetContent:获取文件的UriGetMultipleContents:获取多个文件的UriOpenDocument:打开文件OpenMultipleDocuments:打开多个文件OpenDocumentTree:打开文件夹CreateDocument:创建文件

知名设计师以AI技术绘制JACQUEMUSXNike新系列及店铺概念图近日,知名设计师MARCOSIMONETTI透过AI技术绘制出了以滑雪为主题的JACQUEMUSXNike系列服饰和快闪店之概念图。从其发布的影片可见,他创作的JACQUEMUSX鲜与鲜寻冬虫夏草冬虫夏草泡水的正确方法是什么?冬虫夏草是一种十分名贵的中药材,具有出色的滋补功效,可以预防和治疗人类的多种疾病。它在市场上的售价比黄金还要高,而冬虫夏草的吃法有很多种,在食用前一般都要做简单的加工处理,那么冬虫分享10家通勤男裤店铺,百搭基础款为主冬日生活打卡季今天分享10家通勤男裤店铺,百搭基础款为主,好穿版型正,重点是不会怎么挑腿型,女生也可以为你们男友收藏起来,帮他选一下,想到就能用到,干货满满,记得收藏起来,想穿随时亚马逊雨林的绿水蚺,长可达10米,重达225公斤,鳄鱼也是其食物亚马逊雨林是世界上最著名的雨林,不仅因为其丰富的生物多样性和无与伦比的美丽外表,还因为它是地球上最大的雨林,堪称地球之肺。它的覆盖面积大于刚果盆地和印度尼西亚的总和,占到了南美大陆公共电单车小橙出行启动运营使用方法和收费标准来了闽南网12月30日讯(闽南网记者陈玉玲通讯员陈颖)30日下午,智慧交通小橙出行泉州市中心城区公共电单车项目正式启动,这也标志着公共电单车小橙出行开始投放运营,其使用方法和收费标准也湖南工程学院人工智能产业学院获批认定省级现代产业学院近日,湖南省教育厅省工业和信息化厅联合公布了第二批湖南省现代产业学院名单,湖南工程学院申报的人工智能现代产业学院喜获认定,这是该校首个省级现代产业学院。湖南工程学院人工智能现代产业手握二十几万想买5座纯电动SUV?浅析顶配版天际ME7首年用车成本买车要考虑自己的经济条件,根据自己的收入水平选择适合自己的车型。对于很多工薪阶层来说,月收入五六千元,在生活成本的支出上就已经捉襟见肘了。所以在考虑买车时,除了新车的售价之外,用车抖音小店体验分下降对店铺生意影响太大,该如何快速提升?抖音电商第一步先搞清楚抖音小店体验分下降的具体原因。体验分由三部分组成,商品物流服务。哪里有问题补哪里。接下来我们逐一来分析商品体验,占比42。5。如果是商品体验分低,那你就要优化阿富汗首款国产跑车亮相!这设计水平不输其它顶尖品牌新能源车杂谈2023年1月1日消息,根据阿富汗当地媒体近日的报道,有史以来阿富汗本土企业制造的首款国产跑车在风雪中的马路上亮相,这款跑车的品牌名称叫Entop,模型车经历了漫长的5他火的时候乔布斯刚创业,盖茨给他打工你不知道的中国学霸他是谁头条创作挑战赛这个人曾经让美国本土计算机科技人士都害怕他拥有十多项高精尖发明专利,全球华人首富,入选美国发明家名人堂。最让人不相信的就是乔布斯当时才开始创业,比尔盖茨还给他打过工,我国空间站为啥不用散热板?看不上美国设计,我们用斯特林发电机国际空间站看起来比我国空间站大很多,除了舱段和对接口的确要多一些之外,最关键的是它的太阳翼多,有点洗澡前的猫狗,不是真的胖,只是毛发蓬松显大而已。不过,国际空间站的太阳翼,并非都是
欧冠首轮小组赛!主场迎战苦主拜仁,巴萨能否避免一场大溃败?在国际比赛日结束之后,欧洲五大联赛和欧冠联赛都将重燃战火,其中欧冠联赛将迎来首轮小组赛,在之前的分组情况出炉之后,球迷大呼过瘾纷纷表示电影都拍不出这样的桥段,多支有着无数看点的球队要想学好武术,必须练好哪些基本功?现今传统武术的境况,不太好,绝大多数习练者,只有科普的水平,没有实在的学术功底。什么叫科普水平呢?比如社会上的科学爱好者,也能谈霍金,谈爱因斯坦,谈相对论,读过lt时间简史gtlt为什么比特币之类的数字货币,明显是规则制定者们做出来的陷阱,还这么多人趋之若鹜呢?因为都没你这么聪明跟当初炒作兰花郁金香一样人们都认为自己不会是那最后一个人你开个道场,给迷茫的大众,布什下你的智慧。怎么明显怎么就是陷阱了?你看过比特币的白皮书吗?你搞懂区块链是啥华为手机和电脑之间怎样互传照片?感谢邀请。发现更多精彩功能,请访问玩机技巧应用。经过一段时间的发展,手机和电脑之间图片的互相传输成为一种非常必要的条件。目前手机和电脑进行交互的方式主要有四种。第一种方案是手机连接七岁半孩子门牙在牙龈中半年,一直长不出来是怎么回事?医生,我女儿门牙都掉了一年了,还没长出来,这可怎么办咯?小美的妈妈焦急地问。7岁的小美的上门牙去年就掉了,但是该换出来的恒牙像害羞的小姑娘,犹抱琵琶半遮面,近在咫尺,却又迟迟不露面kindle值得买吗?用途多吗?你不会因为买了一个kindle而爱上看书,如果你本身不看书,那它最大的作用就是盖方便面。不如5块钱的盘子实惠。但是如果你本身很爱看书,那就挺好用,买最简单的背光款就好,可以在睡前,酒驾检察院不起诉就算无罪吗?你好,这种说法是不准确的。检察院的不起诉有三种法定的不起诉(绝对不起诉),是指没有犯罪事实或者行为不属于犯罪或者法律规定不追究,这种不起诉决定是绝对的无罪。酌定的不起诉(相对不起诉占坑式辩护受争议,法律援助律师应当何时指派如何履职?首先说下现在法援在什么时候介入,除未成年人以及一些涉及死刑的重犯,在侦查阶段提供法援服务外,基本都是在法院审判阶段才派法援律师。其实已经错过了最佳辩护时间!起诉书已经起诉要再来提证怎样腌制酸黄瓜呢?我家腌制酸黄瓜的方法是,鲜嫩黄瓜3斤,洗净切成条形,过一下开水捞出冲凉,沥干水分,放进容器里,根据自己的口味放白糖,水塔陈醋,食用盐,鲜姜片,大蒜,一个红辣椒,喜欢吃果香味的可以放黄瓜配什么炒好吃?黄瓜是很常见的蔬菜,它富含多种对人体有益的营养成分,味道清香,可以和很多种食材搭配制作出美味的菜肴,做法有很多种,但都不算困难,大家多动手尝试制作几次就可以熟练掌握下面我分享一下我不出去打工的农民,一般有哪些收入?我们这边不出去打工的农民很多,有做养殖行业的,有承包土地干种植的,还有做小本生意的,还有一部分年轻人在家玩大型机械挣钱的,这些活都是些头脑灵活,不怕吃苦受累,有上进心努力奋斗的人去
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网