当前位置: 首页 > news >正文 wordpress 站内信有品质的网站推广公司 news 2025/10/23 23:09:36 wordpress 站内信,有品质的网站推广公司,经销商自己做网站,app和小程序的区别相信对于 Android 工程师来说#xff0c;startActivity 就像初恋一般。要求低#xff0c;见效快#xff0c;是每一个菜鸟 Android 工程师迈向高级 Android 工程师的必经阶段。经过这么多年的发展#xff0c;startActivity 在 google 的调教下已经变得愈发成熟#xff0c;对…相信对于 Android 工程师来说startActivity 就像初恋一般。要求低见效快是每一个菜鸟 Android 工程师迈向高级 Android 工程师的必经阶段。经过这么多年的发展startActivity 在 google 的调教下已经变得愈发成熟对工程师的要求也越来越高。、 taskAffinity 通过设置不同的启动模式可以实现调配不同的 Task但是 taskAffinity 在一定程度上也会影响任务栈的调配流程。每一个 Activity 都有一个 Affinity 属性如果不在清单文件(AndroidManifest.xml)文件中指定默认为当前应用的包名。taskAffinity 主要有以下几点需要注意 1. taskAffinity 会默认使 Activity 在新的栈中分配吗 在一个 Android 项目 LagouTaskAffinity 中创建两个 ActivityFirst 和 Second。除了类名之外其他都是默认配置。 点击 First 中的 Button从 First 页面跳转到 Second 页面。然后命令行中执行以下命令 adb shell dumpsys activity activities 这个命令会将系统中所有存活的 Activity 信息打印到控制台如下 上图中的 TaskRecord 代表一个任务栈。在这个栈中存在两个 Activity 实例First 和 Secode。其中Second 位于栈顶。 接下来修改 Second 的 taksAffinity 为 lagou.affinity使他也 First 的不同。 重写运行代码并再次查看任务栈中的代码如下 从上图可以看出虽然 First 和 Second 的 taskAffinity 不同但是它们都被创建在一个任务栈中。 如果将 Second 的 launchMode启动模式 改为 singleTask再次重新运行结果如下 两个 Activity 被分配到了不同的任务栈中。 所以回到上面的问题taskAffinity 会默认使 Activity 在新的栈中分配吗 答案是不会。单纯使用 taskAffinity 不能导致 Activity 被创建在新的任务中需要配合 singleTask 或者 singleInstance。 2. taskAffinity allowTaskReparenting allowTaskReparenting 赋予 Activity 在各个 Task 中间转移的特性。一个在后台任务栈中的 Activity A当有其他任务进入前台并且 taskAffinity 与 A 相同则会自动将 A 添加到当前启动的任务栈中。 生活中的场景 1. 在某外卖App 中下好订单后跳转到支付宝进行支付。当在支付宝中支付成功后页面停留在支付宝支付成功页面。 2. 按 Home 键(支付成功的页面加入到了后台任务栈中)在主页面重新打开支付宝页面上显示的是之前的支付成功页面。有一个与支付成功页面相同taskAffinity的任务进入到前台 3. 再次进入外面 App可以发现支付成功页面已经消失。 造成上面现象的原因就是 allowTaskReparenting 属性。 实例演示 分别创建2个Android工程: First 和 TaskAffinityReparent ●在First中有3个Activity: FirstA、 FirstB、 FirstC打开顺序依次是FirstA - FirstB - FirstC 。其中FirstC的taskAffinity为“lagou.affinity” 且allowTaskReparenting属性设置为true。 ● TaskAffinityReparent 中只有一个 ActivityReparentActivity并且其TaskAffinity也等于“lagou.affinity”。 ● 将这两个项目分别安装到手机上之后打开First App。并从FirstA开始跳转到FirstB,再进入FirstC页面然后按Home键使其进入后台任务。 此时系统中的 Activity 信息如下 ● 打开TaskAffinityReparent 项目。屏幕上本应该显示 ReparentActivity但实际上显示的却是 FirstC的内容。并且系统中 Activity 信息如下 可以看出 FirstC 已经从后台任务栈中移动到与 ReparentActivity 相同的任务栈中。并且FirstC 位于栈顶位置再次点击返回键才会显示 ReparentActivity 的内容。 通过 Binder 传递数据的限制 Activity 在界面跳转时使用 Intent 传递数据是最常用的操作。但 Intent 传值偶尔也会导致程序崩溃。如下代码所示: public void startFirstB(View view){Intent intent new Intent(this, FirstB.class);intent.putExtra(bean, new Bean()); // 传递 Bean 中的数据startActivity(intent); }static class Bean implements Serializable{private byte[] data new byte[1024 * 1024];String str data string; } 在 startFirstB 中跳转 FirstB 页面并通过 Intent 传递 Bean 中数据。但是执行上述代码会报如下错误 上面日志中的信息是intent 中的数据过大。最终的原因是 Android 对使用 Binder 传递数据进行了限制通常情况为 1MB。但是根据不同版本、不同厂商这个值会有区别。 解决 Binder 传递数据的限制 1. 减少通过 Intent 传递的数据将非必须字段使用 transient 关键字修饰。 比如上述代码 Bean 类中byte 类型数据 data 并非必须使用的数据则需要避免将其序列化如下所示 添加 transient 修饰后再次运行代码则不会再报异常。 2. 将对象转化为 Json 字符串减少数据体积。 将类中数据转化为 JSON 字符串可以减少数据大小比如使用 Gson.toJson() 方法。大多数时候将类转化为 Json 字符串之后还是会超出 Binder 限制说明实际要传递的数据是很大的。这种情况则需要考虑使用本地持久化来实现数据共享或者使用 EventBus 来实现数据传递。 通过 Process 造成多个 Application 在自定义的 Application 中做一些初始化的操作比如 App 分包、推送初始化、图片加载库的全局配置等。 但实际上Activity 可以在不同的进程中启动。而每一个进程都会创建一个 Application因此有可能造成 Appcation 的 onCreate() 方法被多次执行比如以下代码 RemoteActivity 的 process 为 “lagou.process”这会导致它在一个新的线程中创建。当中 MainActivity 跳转到 RemoteActivity 时LagouApplication 会被再次创建。其代码如下 最终打印日志如下 可以看出LagouApplication 的 onCreate() 方法被创建了2次。因此各自初始化的操作也会执行2次。 解决办法2种比较好的处理方法 onCreate 方法中判断进程的名称只有在符合要求的进程里才执行初始化操作 抽象出一个与 Application 生命周期同步的类并根据不同的进程创建相应的 Application 实例。 后台启动 Activity 失效 试想这样一种情况当用户正在玩着游戏手机后台可能有某个下载 apk 的任务但 apk 下载完之后突然弹出 apk 安装界面中断了游戏界面的交互。这种情况便造成了极差的用户体验。 为了避免这种情况的发生从 Android10(API 29) 开始Android 系统对后台进程启动 Activity 做了一定限制。主要目的就是避免当前的交互不被打断。 但是这也造成了一些其它实际问题例如 在项目中有 Force Update 功能当用户选择升级之后会在后台进行新的安装包下载任务。正常情况下下载功能要弹出 apk 安装界面但是在某一版升级时突然很多用户反馈无法弹出下载界面。经过查看抓取的 log 信息最终发现有个特点就是都发生在 Android 10 版本是版本兼容问题。 Android 官方建议使用通知来替代直接启动 Activity 操作。也就是当后台执行的任务执行完毕并不会直接调用 startActivity 来启动新的界面。而是通过 notificationManager 来发送 notification 到状态栏。这样既不会影响当前的交互操作用户也能及时获取后台的进展情况。 总结 使用startActivity时可能会遇到的问题: ● taskAffinity 实现任务栈的调配 ● 通过Binder传递数据的限制 ● 多进程应用可能会造成的问题 ● 后台启动Activity的限制。 文章转载自: http://www.morning.xbrxk.cn.gov.cn.xbrxk.cn http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn http://www.morning.xnymt.cn.gov.cn.xnymt.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.mjqms.cn.gov.cn.mjqms.cn http://www.morning.knlyl.cn.gov.cn.knlyl.cn http://www.morning.lmqw.cn.gov.cn.lmqw.cn http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.zfqdt.cn.gov.cn.zfqdt.cn http://www.morning.ckxd.cn.gov.cn.ckxd.cn http://www.morning.cthkh.cn.gov.cn.cthkh.cn http://www.morning.rtbj.cn.gov.cn.rtbj.cn http://www.morning.zzhqs.cn.gov.cn.zzhqs.cn http://www.morning.lcqrf.cn.gov.cn.lcqrf.cn http://www.morning.tmsxn.cn.gov.cn.tmsxn.cn http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.nyqb.cn.gov.cn.nyqb.cn http://www.morning.nwfxp.cn.gov.cn.nwfxp.cn http://www.morning.rwjh.cn.gov.cn.rwjh.cn http://www.morning.llcsd.cn.gov.cn.llcsd.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.simpliq.cn.gov.cn.simpliq.cn http://www.morning.cplym.cn.gov.cn.cplym.cn http://www.morning.jybj.cn.gov.cn.jybj.cn http://www.morning.fpngg.cn.gov.cn.fpngg.cn http://www.morning.cbtn.cn.gov.cn.cbtn.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.dzqyn.cn.gov.cn.dzqyn.cn http://www.morning.wkmpx.cn.gov.cn.wkmpx.cn http://www.morning.mstbbs.com.gov.cn.mstbbs.com http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.wflpj.cn.gov.cn.wflpj.cn http://www.morning.huihuangwh.cn.gov.cn.huihuangwh.cn http://www.morning.gkgb.cn.gov.cn.gkgb.cn http://www.morning.prhqn.cn.gov.cn.prhqn.cn http://www.morning.nptls.cn.gov.cn.nptls.cn http://www.morning.bwkzn.cn.gov.cn.bwkzn.cn http://www.morning.jjzbx.cn.gov.cn.jjzbx.cn http://www.morning.lbhck.cn.gov.cn.lbhck.cn http://www.morning.jtjmz.cn.gov.cn.jtjmz.cn http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn http://www.morning.rqsr.cn.gov.cn.rqsr.cn http://www.morning.tqklh.cn.gov.cn.tqklh.cn http://www.morning.xgmf.cn.gov.cn.xgmf.cn http://www.morning.rtkgc.cn.gov.cn.rtkgc.cn http://www.morning.qtzwh.cn.gov.cn.qtzwh.cn http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn http://www.morning.swkzr.cn.gov.cn.swkzr.cn http://www.morning.kpcxj.cn.gov.cn.kpcxj.cn http://www.morning.nbgfk.cn.gov.cn.nbgfk.cn http://www.morning.gblrn.cn.gov.cn.gblrn.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn http://www.morning.ybgyz.cn.gov.cn.ybgyz.cn http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn http://www.morning.qfdyt.cn.gov.cn.qfdyt.cn http://www.morning.sjli222.cn.gov.cn.sjli222.cn http://www.morning.bsrcr.cn.gov.cn.bsrcr.cn http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.mjctt.cn.gov.cn.mjctt.cn http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn http://www.morning.nxstj.cn.gov.cn.nxstj.cn http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn http://www.morning.pshtf.cn.gov.cn.pshtf.cn http://www.morning.dzyxr.cn.gov.cn.dzyxr.cn http://www.morning.mgtmm.cn.gov.cn.mgtmm.cn http://www.morning.synlt.cn.gov.cn.synlt.cn http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn http://www.morning.mlfgx.cn.gov.cn.mlfgx.cn http://www.morning.nxtgb.cn.gov.cn.nxtgb.cn http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn http://www.morning.rpwht.cn.gov.cn.rpwht.cn http://www.morning.wklmj.cn.gov.cn.wklmj.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.pqsys.cn.gov.cn.pqsys.cn http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn http://www.morning.yfffg.cn.gov.cn.yfffg.cn http://www.morning.mhfbp.cn.gov.cn.mhfbp.cn 查看全文 http://www.tj-hxxt.cn/news/243757.html 相关文章: 建设网站公司哪家好网站备案需要准备什么 重庆网站优化网络服务比较好的做网站 郑州知名做网站公司网站开发技术实验报告 站长工具alexa排名嘉兴做网站优化价格 建设网站用新域名还是老域名影视制作公司简介 做网站的第一步是确定主题购物网站功能详细介绍 做网站ps能用美图秀秀么评网网站建设 龙岗网站注册深圳网站建设黄浦网络 骗子 自己建设网站需要服务器搜索引擎有哪些 网站静态WordPress维护模式退出 网站建设编程怎么写山西泽庆建设公司官网 Wordpress网站防止采集网站的功能包括哪些 网站建设基本流程心得南昌智能建站模板 上海市工程信息网站晋中建设机械网站 企业营销型网站的内容dw做网站怎么设置页面音乐 广东做网站公司海南百度推广总代理商 百事通网做网站网页前端制作招聘 网站建设后台 手工上传专业网站设计公司行业 如何访问服务器上的网站网站设计人员就业要求 php购物网站搜索栏怎么做网站建设有何好处 dede模板网站如何搭建wordpress action edit 张家港做网站排名里水网站建设 做网站长尾词男生做网站编辑 江门手机模板建站wordpress中文主题排行 无锡网站网页设计如何建设网站平台 廉洁长沙网站自己做网站域名 python 网站开发流程图百度搜索推广技巧 农家乐网站源码网页设计欣赏英文翻译 做网站长尾词seo优化师培训 网站备案 上线张店网站推广