asynctask被弃用(如何提升Android应用的性能)

2025-03-27 00:50:01 0

asynctask被弃用(如何提升Android应用的性能)

本文目录

如何提升Android应用的性能

第一个要点:首先要有良好的编程习惯要成为一名优秀的资源管理员;既要运用常识,还要使用公认的算法和标准的设计模式。在资源使用方面,如果你打开了资源,要记得关闭资源。要尽量晚地获取,尽量早地释放。这些由来已久的编程准则同样适用于你的Android应用程序,如果它们使用底层的设备服务,更是如此。第二个要点:让阻塞操作远离主用户界面线程想确保你的应用程序运行起来很灵活,就要使用AsyncTask、线程、IntentService或自定义后台服务来处理脏活。应使用装入器来简化装入时间长的数据(如游标)的状态管理。你无法容忍你的应用程序在某个操作正在处理的时候出现滞后或停顿。第三个要点:使用最新的Android软件开发工具包(SDK)版本、应用编程接口(API)和最佳实践确保你开发的应用程序是最新的,因而要使用Android平台提供的最新工具。随着Android平台不断发展,它也在不断改进。一些功能 可能已被弃用,或者换成了更好的功能。核心API得到了修正版(bug fix)和性能改进。已经引入了装入器等新的API,帮助开发者编写出运行更稳定、响应更迅即的应用程序。第四个要点:考虑使用限制模式(Strict Mode)你可以使用名为限制模式(StrictMode)的AndroidAPI,帮助你查明哪里违反了几个良好的编程习惯。StrictMode 会帮助你确认你的应用程序是不是存在内存泄漏,并且检测你的应用程序是不是在试图执行长时间的阻塞操作,这些操作应该被卸载到线程或别的渠道。Android2.3里面引入StrictMode类(android.os.StrictMode)。第五个要点:在发布应用程序之前,禁用或尽量少用调试和诊断如果你的Android应用程序开发起来需要一些时间,你可能已将一些日志和调试代码嵌入到了应用程序中。写入到日志及其他此类输出系统给性能带来了影响。确保在发布应用程序之前,尽量少用或完全禁用这些功能。第六个要点:确保你设计的布局简单、简练和浅层简单的屏幕有助于阅读起来最轻松,而简单的布局装入起来最快速。你不应该过于深层地嵌套你的布局,或者用不必要的过多视图(View)控件 塞满屏幕。花些时间来开发用户可以高效使用的简练用户界面,而不是试图把太多功能塞入到单单一个屏幕上。这不但有助于提升应用程序的性能,还有助于让你的 应用程序对用户来说更高效。第七个要点:让你应用程序的资源适合目标设备添加适合特定设备配置的资源,那样它们就能尽可能高效地装入。我们在谈论图形资源时,这点尤为重要。如果你添加了可利用的庞大图像资源,需要装入和调整大小,就无法有效地使用其他的应用程序资源。第八个要点:使用Hierarchy Viewer工具Hierarchy Viewer工具可以帮助你调试你的应用程序布局。它还提供了宝贵的分析信息,以便了解布局里面的每一个视图控件测量、渲染和绘制要花多少时间。只有准确找到了问题的根源,问题解决起来才容易。第九个要点:使用layoutopt工具Layoutopt工具是一款简单的命令行工具,它可以帮助你找到不必要的控件嵌套以及缩减布局资源的其他方法,以便尽量减少资源的使用。它让你可以了解哪些布局控件可能是多余的或不必要的。控件越少、布局层次越浅,性能就越好。

android asynctask的do in background方法是怎么通知ui线程刷新进度条的

在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户。这样就解决了子线程更新UI的问题。但是费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题。因此android提供了一个工具类AsyncTask,顾名思义异步执行任务。这个AsyncTask生来就是处理一些后台的比较耗时的任务,给用户带来良好用户体验的,从编程的语法上显得优雅了许多,不再需要子线程和Handler就可以完成异步操作并且刷新用户界面。先大概认识下Android.os.AsyncTask类:* android的类AsyncTask对线程间通讯进行了包装,提供了简易的编程方式来使后台线程和UI线程进行通讯:后台线程执行异步任务,并把操作结果通知UI线程。* AsyncTask是抽象类.AsyncTask定义了三种泛型类型 Params,Progress和Result。* Params 启动任务执行的输入参数,比如HTTP请求的URL。* Progress 后台任务执行的百分比。* Result 后台执行任务最终返回的结果,比如String,Integer等。* AsyncTask的执行分为四个步骤,每一步都对应一个回调方法,开发者需要实现这些方法。* 1) 继承AsyncTask* 2) 实现AsyncTask中定义的下面一个或几个方法* onPreExecute(), 该方法将在执行实际的后台操作前被UI 线程调用。可以在该方法中做一些准备工作,如在界面上显示一个进度条,或者一些控件的实例化,这个方法可以不用实现。* doInBackground(Params...), 将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台处理工作。可以调用 publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。* onProgressUpdate(Progress...),在publishProgress方法被调用后,UI 线程将调用这个方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。* onPostExecute(Result), 在doInBackground 执行完成后,onPostExecute 方法将被UI 线程调用,后台的计算结果将通过该方法传递到UI 线程,并且在界面上展示给用户.* onCancelled(),在用户取消线程操作的时候调用。在主线程中调用onCancelled()的时候调用。为了正确的使用AsyncTask类,以下是几条必须遵守的准则:1) Task的实例必须在UI 线程中创建2) execute方法必须在UI 线程中调用3) 不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法,需要在UI线程中实例化这个task来调用。4) 该task只能被执行一次,否则多次调用时将会出现异常doInBackground方法和onPostExecute的参数必须对应,这两个参数在AsyncTask声明的泛型参数列表中指定,第一个为doInBackground接受的参数,第二个为显示进度的参数,第第三个为doInBackground返回和onPostExecute传入的参数。

android asynctask过时了吗

注意事项;1. AsyncTask对象不可重复使用,也就是说一个AsyncTask对象只能execute()一次,否则会有异常抛出“java.lang.IllegalStateException: Cannot execute task: the task is already running“2. 在doInBackground()中要检查isCancelled()的返回值,如果你的异步任务是可以取消的话。cancel()仅仅是给AsyncTask对象设置了一个标识位,当调用了cancel()后,发生的事情只有:AsyncTask对象的标识位变了,和doInBackground()执行完成后,onPostExecute()不会被回调了,而doInBackground()和 onProgressUpdate()还是会继续执行直到doInBackground()结束。所以要在doInBackground()中不断的检查 isCancellled()的返回值,当其返回true时就停止执行,特别是有循环的时候。如上面的例子,如果把读取数据的isCancelled() 检查去掉,图片还是会下载,进度也一直会走,只是最后图片不会放到UI上(因为onPostExecute()没被回调)!这里的原因其实很好理解,想想Java SE的Thread吧,是没有方法将其直接Cacncel掉的,那些线程取消也无非就是给线程设置标识位,然后在run()方法中不断的检查标识而已。3. 如果要在应用程序中使用网络,一定不要忘记在AndroidManifest中声明INTERNET权限,否则会报出很诡异的异常信息,比如上面的例子,如果把INTERNET权限拿掉会抛出“UnknownHostException“。刚开始很疑惑,因为模拟器是可以正常上网的,后来Google了下才发现原来是没权限,但是疑问还是没有消除,既然没有声明网络权限,为什么不直接提示无网络权限呢?对比Java SE的ThreadThread是非常原始的类,它只有一个run()方法,一旦开始,无法停止,它仅适合于一个非常独立的异步任务,也即不需要与主线程交互,对于其他情况,比如需要取消或与主线程交互,都需添加额外的代码来实现,并且还要注意同步的问题。而AsyncTask是封装好了的,可以直接拿来用,如果你仅执行独立的异步任务,可以仅实现doInBackground()。所以,当有一个非常独立的任务时,可以考虑使用Thread,其他时候,尽可能的用 AsyncTask。-

asynctask被弃用(如何提升Android应用的性能)

本文编辑:admin
asynctask被弃用 ,oid

更多文章:


java集合对象(Java编程实现创建一个集合类对象)

java集合对象(Java编程实现创建一个集合类对象)

本文目录Java编程实现创建一个集合类对象在java当中如何理解添加对象到集合java中的类,集合,类的属性,对象,有什么关系Java的集合对象都有哪些java常见的集合对象有哪些Java编程实现创建一个集合类对象import java.u

2025年2月11日 05:50

ps怎么抠图视频教程(PS怎么抠图)

ps怎么抠图视频教程(PS怎么抠图)

本文目录PS怎么抠图ps怎么快速抠图视频ps怎样抠图视频PS怎么抠图ps怎么抠图?ps怎么抠图头发丝?当我们需要使用Photoshop软件给图片抠图时,该怎么抠图呢,怎么给头发丝抠图,ps怎么抠图,下面就和小编一起来看看吧! 1

2025年3月4日 08:50

finaldata(U盘启动盘被分区格式化了,里面的数据资料怎么恢复)

finaldata(U盘启动盘被分区格式化了,里面的数据资料怎么恢复)

本文目录U盘启动盘被分区格式化了,里面的数据资料怎么恢复数据恢复软件finaldata怎么用U盘启动盘被分区格式化了,里面的数据资料怎么恢复如果不重要,不建议恢复。恢复数据会丢失一部分,还会有些打不开。如果题主非要恢复也是可以的。肯定会有部

2025年3月19日 02:40

former teacher(on his arrival at school ,he visited his former teacher.为什么用his arriving是错误的)

former teacher(on his arrival at school ,he visited his former teacher.为什么用his arriving是错误的)

本文目录on his arrival at school ,he visited his former teacher.为什么用his arriving是错误的I decided to pay a visit to my former te

2025年2月22日 00:50

selenium官网下载(selenium webdriver需要哪些包)

selenium官网下载(selenium webdriver需要哪些包)

本文目录selenium webdriver需要哪些包求selenium IDE的下载步骤Selenium怎样驱动Firefox浏览器selenium官网是动态网页吗selenium是什么有人能提供个兼容火狐浏览器最新版56.0.2 (64

2025年3月25日 13:20

数据治理方案(数据治理三个阶段是什么)

数据治理方案(数据治理三个阶段是什么)

本文目录数据治理三个阶段是什么什么是数据安全治理数据安全治理怎么做,涉及到的数据安全产品主要包括哪些保险数据安全怎么来治理如何有效的进行数据治理和数据管控数据治理总体解决方案数据治理三个阶段是什么数据治理分为四个阶段:第一阶段,梳理企业信息

2025年2月13日 17:00

meaningful怎么读(隽怎么读)

meaningful怎么读(隽怎么读)

本文目录隽怎么读隽水的“隽”字读音meaningful可以形容人吗“隽”的读音怎么读隽怎么读隽在名字中的读音是:jùn。一、拼音:释义:同“俊”。二、拼音:释义:1、鸟肉肥美。2、隽永。三、隽的部首:隹四、汉字结构:上下结构五、笔画:扩展资

2025年2月23日 19:50

visible造句(我高三,做英语试卷时大多数单词看不懂,做题目很困难要高考了,怎么办啊)

visible造句(我高三,做英语试卷时大多数单词看不懂,做题目很困难要高考了,怎么办啊)

本文目录我高三,做英语试卷时大多数单词看不懂,做题目很困难要高考了,怎么办啊英语造句~!!!英语好的才可以来!灯的光线动摇不定,忽明忽暗的四字成语是什么可属名词和不可属名词的英语造句共16句英语造句八个英语单词的翻译和造句用几个词造句 英文

2025年3月19日 19:20

stylus相机(哪几款数码相机的性价比比较高)

stylus相机(哪几款数码相机的性价比比较高)

本文目录哪几款数码相机的性价比比较高恒定光圈卡片机,松下FZ200与奥林巴斯STYLUS 1哪个好不考虑sonyRX10,太贵还有其他恒定光圈卡片机么奥林巴斯STYLUS 1s怎么样哪几款数码相机的性价比比较高各厂商的小数码相机旗舰机型多数

2025年2月27日 14:50

boring币(boring币什么时候上coinbase)

boring币(boring币什么时候上coinbase)

本文目录boring币什么时候上coinbaseboring币怎么样borⅠng是什么币boring币什么时候上coinbaseCoinbase终于确认了上市时间。4月1号,一开始据彭博社消息,交易平台Coinbase计划在两周内直接上市。

2025年3月22日 07:40

parameter1(书上说,linux命令格式为 command [-options] parameter1 parameter2 ls -al,这个怎么理解)

parameter1(书上说,linux命令格式为 command [-options] parameter1 parameter2 ls -al,这个怎么理解)

本文目录书上说,linux命令格式为 command [-options] parameter1 parameter2 ls -al,这个怎么理解C++里cannot convert parameter 1 from ’double’ to

2025年2月10日 00:50

hybrid app(什么是Hybrid AppH5)

hybrid app(什么是Hybrid AppH5)

本文目录什么是Hybrid AppH5咋分辨App是Native App、Web App、Hybrid app开发软件费用为什么这么贵什么是Hybrid AppH5欢迎关注DonutsApps随着移动浪潮的兴起,各种APP层出不穷,极速的业

2025年2月23日 14:00

ranges of(there is a range of hills around our house为什么不用ranges,而用a range)

ranges of(there is a range of hills around our house为什么不用ranges,而用a range)

本文目录there is a range of hills around our house为什么不用ranges,而用a range求翻译~The candidate had broad support from the lower ra

2025年3月26日 12:10

特效化妆师大对决(特效化妆师大对决第三季的选手介绍)

特效化妆师大对决(特效化妆师大对决第三季的选手介绍)

本文目录特效化妆师大对决第三季的选手介绍《特效化妆师大对决》好看在哪里特效化妆师大对决的第一季特效化妆师大对决在哪可以看特效化妆师大对决第三季的选手介绍年龄: 21  特长: 铸模雕刻  职业: 特效化妆师家乡: 纽约市alana是第三季最

2025年3月6日 20:20

theater攻略(cube escape theatre怎么玩)

theater攻略(cube escape theatre怎么玩)

本文目录cube escape theatre怎么玩方块房间逃脱剧院第5部分怎么过 Cube Escape Theatre第5部分攻略Stellar☆Theater的游戏攻略Stellar Theater的黑猫片段怎么过啊求点空篇的攻略cu

2025年4月2日 23:10

java菜鸟教程实例(新手入门学习java语言)

java菜鸟教程实例(新手入门学习java语言)

本文目录新手入门学习java语言新手学习JAVA应当具备哪些基础知识怎么用java写一个http接口新手入门学习java语言新手入门学习java语言,可以从以下方面学习: 1、掌握静态方法和属性  静态方法和属性用于描述某一类对象群体的特征

2025年2月23日 15:40

norman conquest(What is the influence of the Norman Conquest upon English language and literature)

norman conquest(What is the influence of the Norman Conquest upon English language and literature)

本文目录What is the influence of the Norman Conquest upon English language and literaturenorman conquest of England什么是“norma

2025年3月25日 01:00

w3c网页标准(为什么我们设计的网页,需要符合W3C标准)

w3c网页标准(为什么我们设计的网页,需要符合W3C标准)

本文目录为什么我们设计的网页,需要符合W3C标准怎么理解WEB标准及W3C为什么我们设计的网页,需要符合W3C标准w3c标准是万维网联盟创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。提出的协议。他标准化的网页规

2025年3月27日 15:50

list在java中是什么意思(java里面的list是干什么的,具体它是接口如何使用)

list在java中是什么意思(java里面的list是干什么的,具体它是接口如何使用)

本文目录java里面的list是干什么的,具体它是接口如何使用Java List 用法请问,JAVA中的容器List是什么怎么用举个例子吧,谢谢java list和数组的区别java中List这个是什么java中list的用法在Java中L

2025年3月16日 02:10

puss是什么意思?申智珉 puss音译歌词

puss是什么意思?申智珉 puss音译歌词

本文目录puss是什么意思申智珉 puss音译歌词英语puss是什么意思puss什么意思智珉puss歌词中文翻译puss是什么意思puss一词的中文意思是猫咪、少女的意思。puss作为名词表示为少女、猫咪、嘴、脸、人名、(德)普斯,puss

2025年2月23日 11:50

近期文章

本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索