当前位置: 首页 > news >正文

自建网站好建吗手机自适应网站建设维护

自建网站好建吗,手机自适应网站建设维护,东莞万江网站建设公司,wordpress显示数据库请求本节主要内容#xff1a;了解APP启动流程、启动状态、查看启动时间、CPU Profile定位启动耗时代码、StrictMode严苛模式检测不合理写法、解决启动黑白屏问题。 一、APP启动流程 ①用户点击桌面App图标#xff0c;Launcher进程采用Binder IPC向system_server进程发起startAc…本节主要内容了解APP启动流程、启动状态、查看启动时间、CPU Profile定位启动耗时代码、StrictMode严苛模式检测不合理写法、解决启动黑白屏问题。 一、APP启动流程 ①用户点击桌面App图标Launcher进程采用Binder IPC向system_server进程发起startActivity请求 ②system_server进程接收到请求后向zygote进程发送创建进程的请求 ③Zygote进程fork出新的子进程即App进程 ④App进程通过Binder IPC向sytem_server进程发起attachApplication请求 ⑤system_server进程在收到请求后进行一系列准备工作后再通过binder IPC向App进程发送scheduleLaunchActivity请求 ⑥App进程的binder线程ApplicationThread在收到请求后通过handler向主线程发送LAUNCH_ACTIVITY消息 ⑦主线程在收到Message后通过反射机制创建目标Activity并回调Activity.onCreate()等方法。 ⑧至此App便正式启动开始进入Activity生命周期执行完onCreate/onStart/onResume方法UI渲染结束后便可以看到App的主界面。 二、APP的三种启动状态  冷启动、温启动与热启动三种启动状态每种状态都会影响应用向用户显示所需的时间。 1、冷启动 冷启动是指应用从头开始启动系统进程在冷启动后才创建应用进程。发生冷启动的情况包括应用 自设备启动后或系统终止应用后首次启动。 2、热启动 在热启动中系统的所有工作就是将 Activity 带到前台。只要应用的所有 Activity 仍驻留在内存 中应用就不必重复执行对象初始化、布局加载和绘制。 3、温启动 温启动包含了在冷启动期间发生的部分操作同时它的开销要比热启动高。有许多潜在状态可视 为温启动。例如 用户在退出应用后又重新启动应用。进程可能未被销毁继续运行但应用需要执行onCreate() 从头开始重新创建 Activity。 系统将应用从内存中释放然后用户又重新启动它。进程和 Activity 需要重启但传递到onCreate() 的已保存的实例 state bundle 对于完成此任务有一定助益。 4、在您的应用出现以下情况时将其启动时间视为过长  冷启动用了 5 秒或更长时间。 温启动用了 2 秒或更长时间。 热启动用了 1.5 秒或更长时间。  三、查看启动时间 1、系统日志统计 在 Android 4.4API 级别 19及更高版本中logcat 包含一个输出行其中包含名为 Displayed 的值。此值代表从启动进程到在屏幕上完成对应 Activity 的绘制所用的时间。 ActivityManager: Displayed com.android.myexample/.StartupTiming: 274ms 如果我们使用异步懒加载的方式来提升程序画面的显示速度这通常会导致的一个问题是程序画面已经显示同时 Displayed 日志已经打印可是内容却还在加载中。为了衡量这些异步加载资源所耗费的时间我们可以在异步加载完毕之后调用 activity.reportFullyDrawn() 方法来让系统打印到调用此方法为止的启动耗时。 2、adb 命令统计 adb shell am start -S -W com.file.util/.WwwActivity WaitTime:总的耗时包括前一个应用Activity pause的时间和新应用启动的时间 TotalTime表示新应用启动的耗时包括新进程的启动和Activity的启动但不包括前一个应用Activity pause的耗时。我们一般只要关心TotalTime即可这个时间才是自己应用真正启动的耗时。  四、CPU Profile 1、CPU Profile工具  使用CPU Profile工具定位到启动耗时相关代码进行分析和解决耗时问题。  具体操作 1点击app选择Edit Configuration... 2) 设置好页面的配置后点击Apply --》 OK 3点击Profiler运行APP 4点击Stop等待一段时间生成 5Call Chart 表绿色部分代表我们写的代码的运行时间可以看到方法执行所用到的时间等信息根据耗时比较多的去查看源代码是否在主线程做了耗时操作进而优化代码。 2、Debug API 除了直接使用 Profile 启动之外我们还可以借助Debug API生成trace文件 public class MyApplication extends Application {public MyApplication() {Debug.startMethodTracing(test);} } public class MainActivity extends AppCompatActivity {Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);Debug.stopMethodTracing();} } 运行App则会在sdcard中生成一个test.trace文件需要sdcard读写权限。将手机中的trace文件保存至电脑随后拖入Android Studio即可。 五、StrictMode严苛模式  StrictMode是一个开发人员工具它可以检测出我们可能无意中做的事情并将它们提请我们注意以便我们能够修复它们。 StrictMode最常用于捕获应用程序主线程上的意外磁盘或网络访问。帮助我们让磁盘和网络操作远离主线程可以使应用程序更加平滑、响应更快。 public class MyApplication extends Application {Overridepublic void onCreate() {if (BuildConfig.DEBUG) {//线程检测策略StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads() //读、写操作.detectDiskWrites().detectNetwork() // or .detectAll() for all detectable problems.penaltyLog().penaltyDeath().build());StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects() //Sqlite对象泄露.detectLeakedClosableObjects() //未关闭的Closable对象泄露.penaltyLog() //违规打印日志.penaltyDeath() //违规崩溃.build());}} } 六、启动黑白屏 当系统加载并启动 App 时需要耗费相应的时间这样会造成用户会感觉到当点击 App 图标时会有 “延迟” 现象为了解决这一问题Google 的做法是在 App 创建的过程中先展示一个空白页面让用户体会到点击图标之后立马就有响应。 如果你的application或activity启动的过程太慢导致系统的BackgroundWindow没有及时被替换就会出现启动时白屏或黑屏的情况取决于Theme主题是Dark还是Light。 消除启动时的黑/白屏问题大部分App都采用自己在Theme中设置背景图的方式来解决。 style nameAppTheme.Launcheritem nameandroid:windowBackgrounddrawable/bg/item /style activityandroid:name.WwwActivityandroid:screenOrientationportraitandroid:themestyle/AppTheme.Launcherintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter /activity 然后在Activity的onCreate方法把Activity设置回原来的主题。 Override protected void onCreate(Bundle savedInstanceState) {//替换为原来的主题在onCreate之前调用setTheme(R.style.AppTheme);super.onCreate(savedInstanceState); } 这么做只是提高启动的用户体验。并不能做到真正的加快启动速度。 总结  1). APPlication初始化三方SDK时合理的使用异步初始化、延迟初始化、懒加载机制。 2). 启动过程避免耗时操作如数据库 I/O操作不要放在主线程执行。 3). 类加载优化提前异步执行类加载。 4). 合理使用IdleHandler进行延迟初始化。 5). 简化页面布局嵌套。
http://www.zqtcl.cn/news/774980/

相关文章:

  • 怎么添加网站背景音乐定制建站
  • 西安网站建设和推广公司php企业网站开发实训报告
  • 市网站制作番禺绿叶居
  • 网站漂浮物怎么做电子商务网站开发实训体会
  • 电商网站建设定制济南网站建设及推广
  • 网站标签化wordpress 输出评论内容 函数
  • 明星个人网站设计汕头网络推广公司
  • 深圳有哪些做网站公司好武夷山建设局网站
  • 怎么设立网站赚广告费一个网站可以做多少关键字
  • 网站刚建好怎么做能让百度收录成都定制网站建
  • thinkphp网站开发技术做电脑租赁网站
  • 网站设计评语中午版wordpress
  • 邢台企业手机网站建设汕头网站制作后缀
  • 微网站后台内容设置做网站语言排名2018
  • 嘉兴网站制作网站建设外贸营销推广平台有哪些
  • 网站开发集广州高端网站定制开发价格
  • 网站开发培训成都网站建设 报价单 doc
  • 苏州哪里有做淘宝网站的WordPress模板博客主题
  • 网站做中转做任务 网站
  • 深圳住房建设局网站网站的建设教程
  • 6免费建站的网站在线建筑设计
  • 哪些网站做任务可以赚钱的建设厅网站如何查询企业信息
  • 深圳网站设计+建设首选深圳市服装网站建设需求分析报告
  • 肥城网站制作浙江省建设厅信息港官网
  • 手机网站建设进度南宁企业网站设计
  • 建设学校网站方案大淘客网站上的推广怎么做
  • 哪个网站可以免费学设计南阳网站建设页面
  • 外贸公司建网站一般多少钱南京网站建设小程
  • 洛阳霞光做网站公司手机编程教学
  • 深圳正规网站建设公司顺德网页制作公司