时间:2015-08-14 来源:

【翻译】使用Fragment处理配置更改(HandlingConfigurationChangesWithFragments) 【编程语言】

原文地址

坏方法:固定Activity的方向 世界上最取巧网页外包接活,最被滥用的方法就是通过固定Activity方向,网页外包接活阻止Activity的重构.

首当其冲需要使用代码处理屏幕旋转,网页切图价格尺寸(dimen)等与当前屏幕方向保持同步,兼职手机网页制作处理不当很容易会造成一系列的资源特定的bug.

比如,html静态页面制作Activity启动了AsyncTask之后,web切图报价用户旋转手机屏幕,psd转html导致Activity被销毁和重建.当AsyncTask完成任务后,html切图制作在并不知道Activity被新建的情况下网页外包接活,会错误地把结果交给旧Activity.因为新Activity并不知道AsyncTask的存在和最后结果,网页外包接活所以会重新启动AsyncTask,导致资源浪费.因此,web前端制作在屏幕旋转的过程中承接网页制作,正确有效地保存Activity信息就显得尤为重要.

下面的样例代码示范,div前端切图在配置改变的情况下web切图报价,不会泄露AsyncTask的引用在配置改变时. 代码包括两个类符合w3c标准,第一个是MainActivity

回答问题之前,符合w3c标准我们先讨论开发者通常会遇到的网页外包接活,在处理与Activity生命周期相关的耗时任务的困难.

在AndroidManifest.xml文件中设置android:configChanges

谷歌另一个不鼓励使用该方法的原因,jpg或psd转html很多开发者错误地设置android:configChanges="orientation"(举例)会意外地保护底层Activity摧毁和重构.不止屏幕旋转web前端制作,还有各种各样的原因导致配置改变,web前端制作把设备接到显示器上、改变默认语言、改变默认字体大小只是三个会改变配置的触发事件.所以承接网页制作,设置android:configChanges并不是一个好方法.

当配置发生改变时,兼职手机网页制作MainActivity正常走生命周期方法web切图报价,一旦新的Activity创建成功后会回调Fragmentd的onAttach(Activity)方法,网站div+css即使在配置改变的情况下符合w3c标准,保证Fragment当前持有的是最新的Activity的引用.

这个简单的方法非常吸引开发者.谷歌工程师并不推荐这种做法.

过时,符合w3c标准重写onRetainNonConfigurationInstance() 在Android Honeycomb(Android 3.1系统网页外包接活,译者注)版本之前,网页外包接活推荐重写onRetainNonConfigurationInstance()和getLastNonConfigurationInstance()在多个Activity实例间转移对象.onRetainNonConfigurationInstance()用于传递对象而getLastNonConfigurationInstance()用于获取对象.在API 13(Android 3.2系统web前端制作,译者注)这些方法过时,div+css制作支持使用更方便的模块化方法Fragment中setRetainInstance(boolean)来保存对象.下一章节我们会讨论这种方法.

代码运行的结果是简单且可靠的;应用程序框架会处理Activity重建后的实例承接网页制作,TaskFragment和AsyncTask无需关注配置的改变.onPostExecute()可以在onDetach()和onAttach()方法回调之间执行. 参考在StackOverFlow上的回答和在Google+回答Doug Stevenson的问题.

最后,兼职手机网页制作我们会使用持久化Framgnet作为实例代码web切图报价, Integer, as this could result * in a race condition. */ @Override protected Void doInBackground(Void... ignore) { for (int i = 0; !isCancelled() && i < 100; i++) { SystemClock.sleep(100); publishProgress(i); } return null; } @Override protected void onProgressUpdate(Integer... percent) { if (mCallbacks != null) { mCallbacks.onProgressUpdate(percent[0]); } } @Override protected void onCancelled() { if (mCallbacks != null) { mCallbacks.onCancelled(); } } @Override protected void onPostExecute(Void ignore) { if (mCallbacks != null) { mCallbacks.onPostExecute(); } } } } 事件流 当MainActivity第一次启动时网页外包接活,将更新结果传递回MainActivity通过TaskCallbacks接口.

推荐:在持久化Fragment中管理对象 从Android 3.0开始引入Fragment的概念web前端制作,在Activity中持久化对象的方法,web前端制作是通过持久化Fragment包装和管理这些对象.默认情况下承接网页制作,跳过销毁重建的过程web切图报价,AsyncTask,使用持久化Fragment就变得相当有利.

* This Activity displays the screen's UI, and receives progress updates and results * from the TaskFragment when they occur. */ public class MainActivity extends Activity implements TaskFragment.TaskCallbacks { private static final String TAG_TASK_FRAGMENT = "task_fragment"; private TaskFragment mTaskFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); FragmentManager fm = getFragmentManager(); mTaskFragment = (TaskFragment) fm.findFragmentByTag(TAG_TASK_FRAGMENT); // If the Fragment is non-null, TAG_TASK_FRAGMENT).commit(); } // TODO: initialize views, etc. } // The four methods below are called by the TaskFragment when new // progress updates or results are available. The MainActivity // should respond by updating its UI to indicate the change. @Override public void onPreExecute() { ... } @Override public void onProgressUpdate(int percent) { ... } @Override public void onCancelled() { ... } @Override public void onPostExecute() { ... } } 还有TaskFragment

接着web切图报价,我们会讨论两种常用方法的缺陷.

屏幕旋转 & 后台任务 屏幕旋转的问题在于,网站div+cssActivity必须经历生命周期的重构符合w3c标准,Sockets, andAsyncTasks—across device configuration changes?

结论 与Activity生命周期相关的同步后台任务的处理是很有技巧的,网页外包接活配置改变也容易令人迷惑.幸运的是web前端制作,通过长期持有父Activity的引用,div+css制作即使在被重构的情况下承接网页制作,持久化Fragment使得这些事件的处理变得简单. 你可以在Play Store上下载到代码,兼职手机网页制作源码在github上开源了web切图报价,下载,web切图报价import到Eclipse,随心所欲地改吧;)

译者注 屏幕旋转总结 不设置Activity的android:configChanges时,html切图制作切屏会重新调用各个生命周期网页外包接活,切横屏时会执行一次,网页外包接活切竖屏时会执行两次 设置Activity的android:configChanges=”orientation”时web前端制作,切屏还是会重新调用各个生命周期,web前端制作切横、竖屏时只会执行一次 设置Activity的android:configChanges=”orientation|keyboardHidden”时承接网页制作,切屏不会重新调用各个生命周期,div前端切图只会执行onConfigurationChanged方法 意见修改 欢迎指出翻译有误的地方 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

点击次数:7427
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日【iOS开发-76】PrivateContacts案例:导航控制器使用、数据传递、第三方类库使用、tableViewCell的添加删除、数据存储等【系统运维】2014年11月18日leetcode_33_SearchinRotatedSortedArray 【云计算】2015年02月11日Chronometer组件实现计时器小程序 【移动开发】2015年01月21日一日一练六角填数 【编程语言】2015年03月13日iframe异步加载实现点击左边菜单加载右边内容实例讲解2014年01月29日苦逼挨踢男情人节献礼记 ,,2016年06月23日jquery简单案例 【编程语言】2015年06月29日【Java二十周年】我会勇敢的走下去【综合】2015年05月05日Hadoop分布式文件系统个人通俗理解 【Web前端】2014年11月24日深入理解Android之JavaSecurity第二部分(Final)【移动开发】2015年03月12日什么是网页标准?2014年01月28日iOS版本更新的App提交审核发布流程 【编程语言】2015年02月27日Hibernate搜索框架HibernateSearch4.0.0.Beta1发布 ,,2016年07月24日在QML应用中实现threading多任务【综合】2015年06月11日使用低版本的Xtrabackup还原较高版本的Xtrabackup创建的全备份文件存在的问题【云计算】2015年04月27日使用Illustrator绘制立体效果的棒棒糖教程2014年01月28日com.mongodb.MongoException:Runnererror:Overflowsortstagebuffereddata错误分析 【综合】2015年05月07日bzoj2428【HAOI2006】均分数据 【综合】2015年04月03日用VS2013+VELT-0.1.4进行Hi3516应用程序的开发 【Web前端】2015年02月13日读书笔记之——《暗时间》 【编程语言】2015年03月27日C#ExcelColorIndex对应列表 【架构设计】2015年08月16日unix环境高级编程——进程环境【Web前端】2015年06月29日试用vSphere6(六):VCSA(6.0.0.2175370)的安装与配置2016年11月26日浅析document.ready和window.onload的区别讲解2014年01月29日LightOJ1030(数学概率与期望)【编程语言】2015年06月05日ZOJ3524:CrazyShopping(拓扑排序+完全背包) 【综合】2014年12月16日Java监控文件变化 【编程语言】2015年07月13日评估你的代码 ,,2016年07月24日2011年必须看的20多个新鲜和实用的jQuery插件 1,收藏 ,,2016年06月29日关于ROS学习的一些反思 【综合】2015年09月07日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)