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

触屏版手机网站做装饰公司网站6

触屏版手机网站,做装饰公司网站6,网址经营是什么,网站免费做链接Android生命周期 Android的生命周期#xff1a;onCreate() - onStart() - onResume() - onPause() - onStop() - onDestroy() 如下图所示#xff1a; 1.当activity启动时系统会先调用onCreate(),然后调用onStart(),最后调用**onResume()**方法#xff0…Android生命周期 Android的生命周期onCreate() - onStart() - onResume() - onPause() - onStop() - onDestroy() 如下图所示 1.当activity启动时系统会先调用onCreate(),然后调用onStart(),最后调用**onResume()**方法activity进入运行状态。当activity被别的activity 覆盖在其上时系统会掉用onPause(),然后当覆盖在其上的activity会调用**onCreate() - onStart() - onResume()后第一个activity会调用onStop()**方法使activity暂停。当覆盖在其上的第二个activity关闭返回此activity时系统会先调用第二个activity的**onPause()方法然后再调用第一个activity的onRestart() - onStart() - onResume()方法进入运行状态,此时第二个activity才调用onStop() - onDestroy()**方法关闭。用户退出当前activity系统先调用onPause(),然后调用onSotp(),最后调用**onDestroy()**方法结束当前activity。如下日志打印 第一个activity MainActivity 打开 SingleTopActivity 在返回到 MainActivity MainActivity :onPause 方法-------------------------SingleTopActivity :onCreate 方法-------------------------SingleTopActivity :onStart 方法-------------------------SingleTopActivity :onResume 方法-------------------------MainActivity :onSaveInstanceState 方法--------------------MainActivity :onStop 方法-------------------------SingleTopActivity :onPause 方法-------------------------MainActivity :onRestart 方法-------------------------MainActivity :onStart 方法-------------------------MainActivity :onResume 方法-------------------------SingleTopActivity :onStop 方法-------------------------SingleTopActivity :onDestroy 方法------------------------- 复制代码 onRestart():表示activity正在重新启动一般情况下是当前activity从不可见重新变成可见状态时**onRestart()**就会被调用这种情况一般是用户行为导致的如从其他页面返回当前页面时或者用户按home键切换到桌面在重新打开app。 onStart()和onStop():onStart()表示activity可见了但是还没有获取焦点无法进行交互。onStop()是和onStart()对应的当activity从可见转不可见是调用。 onResume()和onPause():onResume()表示activity已经获取焦点了可以进行交互了onPause()是和onResume()方法对应的表示当前activity失去了焦点此时可以做一些存储数据和停止动画等工作但是不能太好时不是会影响到新的activity的显示因为只有onPause()执行完了新的activity才会进入 onCreate() 等方法。 onDestroy():onDestroy()表示activity正在销毁一般我们是在这进行资源的释放以避免内存的泄漏。 注意 - 如果覆盖在其上的activity的风格是dialog风格的化此activity是不会进入**onSotp()**方法回到此activity时也**不会调用onRestart()和onStart()方法** 会直接调用**onResume()**方法。- 如果activity中弹出dialog对话框的时候**activity是不会调用onPause()方法**;- 只有旧的activity onPause()方法执行完后新的activity才启动 - 在所以情况下系统在调用了onPause()和onStop()之后都会调用onDestroy(),只有一个例外当你从onCreate()方法类调用了finish()时在这种情况下系统会立刻调用onDestroy(),而不调用任何其他生命周期方法。日志如下 复制代码 MainActivity :onPause 方法-------------------------DialogActivity :onCreate 方法-------------------------MainActivity :onResume 方法-------------------------DialogActivity :onDestroy 方法------------------------- 复制代码异常情况下的生命周期比如系统资源配置发生改变以及系统内存不足时activity就可能被杀死。 情况1资源相关配置方式改变导致activity被杀死并重新创建。 比如当前activity处于竖屏旋转屏幕这时由于activity的系统配置改为了横屏状态在默认情况下activity就会被销毁并且重新创建日志打印如下 MainActivity :onCreate 方法-------------------------MainActivity :onCreate:MainActivity TaskId:130 hasCode:151566767MainActivity :onStart 方法-------------------------MainActivity :onResume 方法-------------------------MainActivity :onPause 方法-------------------------MainActivity :onSaveInstanceState 方法-------------------------MainActivity :onStop 方法-------------------------MainActivity :onDestroy 方法-------------------------MainActivity :onCreate 方法-------------------------MainActivity :onCreate:MainActivity TaskId:130 hasCode:233659052MainActivity :onStart 方法-------------------------MainActivity :onRestoreInstanceState 方法-------------------------MainActivity :onResume 方法-------------------------MainActivity :onPause 方法-------------------------MainActivity :onSaveInstanceState 方法-------------------------MainActivity :onStop 方法-------------------------MainActivity :onDestroy 方法-------------------------MainActivity :onCreate 方法-------------------------MainActivity :onCreate:MainActivity TaskId:130 hasCode:262962597MainActivity:TaskAffinity:com.hugo.reviewbasicMainActivity :onStart 方法-------------------------MainActivity :onRestoreInstanceState 方法-------------------------MainActivity :onResume 方法------------------------- 复制代码在上面这日志中 我们进入MainActivity - onCreate() - onStart () - onResume() 这个时候MainActivity已经在栈顶并获得焦点了然后我们旋转手机屏幕 这时调用了 onPause() - onSaveInstanceState() - onStop() - onDestroy() 方法把当前MainActivity 销毁了然后紧接着又重新创建了一个MainActivity - onCreate() - onStart() - onRestoreInstanceState() - onResume() 这是MainActivity已经重新创建并且是横屏显示的这是我们又旋转手机屏幕重新竖屏显示 这是调用了 onPause() - onSaveInstanceState() - onStop() - onDestroy() 方法把当前横屏MainActivity 销毁了并重新创建了竖屏的MainActivity - onCreate() - onStart() - onRestoreInstanceState() - onResume() 在这上面的流程我们可以看到 在第一次进入MainActivity 时是每有调用onRestoreInstanceState() 方法的而是在重新创建时才调用了该方法这个方法是用来做什么的呢这个方法就是用来在activity被销毁并重新创建时用来恢复我们保存的数据用的那我们的数据在哪保存的呢可以看到日志里每次在销毁前都有调用 onSaveInstanceState() 方法,这个方法就是用来保存数据用的。 在onSaveInstanceState()方法中系统会传入Bundle对象用来存储数据在重新创建时onRestoreInstanceState()方法系统会传入在onSaveInstanceState()方法是存储了数据的Bundle对象在onRestoreInstanceState()方法里可以在传入的Bundle对象中获取存储的数据进行页面恢复。 根据日志可以看出 onSaveInstanceState() 总是在 onStop()之前调用而onRestoreInstanceState() 总是在onStart() 之后调用而且onRestoreInstanceState()在activity第一次创建时是不会调用的。 情况2在资源不足的情况下导致低优先级的activity被杀死。 这种情况下和前面第一种情况1的数据存储和恢复是完全一致的activity按照优先级从高到低可以分为以下三种 前台activity正在和用户交互的activity优先级最高。 2.可见但是非前台activity就是能看见但是没有获取到焦点不能和用户进行直接交互。 3.后台activity已经被暂停的activity比如执行了onStop()方法优先级最低。注意 必须始终调用 onSaveInstanceState()和onRestoreInstanceState() 的超类实现因为这两个方法默认实现了保存有关activity视图层次的状态信息和恢复视图层次结构状态列如EditText小部件的文本或ListView的滚动位置。而且所有的View都有onSaveInstanceState()和onRestoreInstanceState()这两个方法。 自行处理配置变更 我们可以在声明Activity将自行处理配置变更这样就可以阻止系统重启activity了。 声明时在AndroidManifest.xml文件中编辑相应的元素设置以包含的 android:configChanges 属性(最常用的值包括“orientation”和“keyboardHidden”,分别用于避免因屏幕方向和可用键盘改变而导致的重启)。我们可以在该属性中声明多个匹配值方法是用“ | ”字符分隔这些配置值。 如下配置 activity android:name.singletop.OtherTopActiivty android:configChangesorientation|screenSize android:launchModesingleTop/ 复制代码现在当其中一个配置发生改变是OtherTopActiivty不会重启但是OtherTopActiivty的onConfigurationChanged()方法会被调用系统会 传入Configuration对象指定新的设备配置。我们可以通过读Configuration中的字段来确定新配置进行相应的UI更改。 以下是在onConfigurationChanged()实现检查当前设备的方向 override fun onConfigurationChanged(newConfig: Configuration?) {    super.onConfigurationChanged(newConfig)   LogUtil.i(TAG,$ActivityName :onConfigurationChanged 方法-------------------------)  if(newConfig?.orientation Configuration.ORIENTATION_LANDSCAPE){      LogUtil.i(TAG,$ActivityName :onConfigurationChanged 横屏)   Toast.makeText(this,横屏,Toast.LENGTH_SHORT).show()   }else if(newConfig?.orientation Configuration.ORIENTATION_PORTRAIT){     LogUtil.i(TAG,$ActivityName :onConfigurationChanged 竖屏)    Toast.makeText(this,竖屏,Toast.LENGTH_SHORT).show()  } }复制代码注意 自行处理配置变更可能导致备用资源的使用更为困难因为系统不会自动应用这些资源。所以只有在我们必须避免activity因配置改变而重启这种情况下才考虑采用自行处理配置变更这种方法而且对于大多数应用并不建议使用此方法。 复制代码 在Android3.0API 级别13开始设备在纵向和横向之间切换时“屏幕尺寸”也会发生改变因此在开发针对API级别13或更高版本的应用时若要避免由于设备方向的改变而导致运行时重启则除了“orientation”值外还必须添加“screenSize“值。也就是必须声明android:configChangesorientation|screenSize。 复制代码 在声明有Activity处理配置变更时我们有责任要为其提供备用资源的所有元素。如声明了activity处理方向变更有些图像是应该横向和纵向之间切换则必须在 onConfigurationChanged()方法中将每个资源重新分配给每个元素。 复制代码 这个例子代码在这里
http://www.sadfv.cn/news/132371/

相关文章:

  • 上海做网站优化公司做个游戏app的费用大概多少
  • 中国建设银行网站忘记密码韩国美食网站建设目的
  • 外贸网站建设推广方案外贸先做网站还是开公司
  • 网站会员功能ui培训周末班
  • 网站建设与发布tp5网站开发逻辑架构
  • 网站建设 软件有哪些方面网站开发与应用 大作业作业
  • 网站名查询网址做网站信科网站建设
  • dedecms网站搬家中小型企业的数据查询
  • 最便宜的手机网站建设集团网站群建设方案
  • 爱站工具的功能都安做网站
  • 东莞做网站的网络公司无锡网站建设工作
  • 如何在iis下建设网站汽车之家app下载
  • 如何制作手机网站牛 网站建设
  • 只做黑白摄影的网站网站建设企业网站优化
  • wordpress网站布置视频中国域名注册中心
  • 怎么做辅助发卡网站郑州手机软件开发公司
  • 网站建设推广培训wordpress 内容排版
  • 做情诗网站小程序就是做网站
  • 中国印花图案设计网站万网网站建设方案书
  • 企业网站的主要功能seo智能优化软件
  • 优化系统流程百度seo培训
  • 大型网站开发的书手机编程软件app下载
  • 网站设计制作报告聊城网站建设招聘
  • 做网站先做母版页英文网站如何做
  • 产品商城网站建设wordpress文章cms模板
  • 闽侯福州网站建设完全开源的一个商城系统
  • 宾馆酒店 网站模板剪辑课程哪里培训最好
  • 杭州 定制网站动漫制作专业需要艺考吗
  • 杭州网站建设的公司wordpress居中样式
  • 网站建设分金手指专业五wordpress 标签转拼音