如何从Android新活动办理处售后问题处理技巧,怎么解决

Android活动的生命周期
时间: 00:05:07
&&&& 阅读:227
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&1.返回栈Android中的活动是可以层叠的。我们每启动一个新的活动,就会覆盖在原活动之上,然后点击Back键会销毁最上面的活动,下面的一个活动就会重新显示出来。其实Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。
2.活动状态每个活动在其生命周期中最多可能会有四种状态。运行状态:当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。系统最不愿意回收的就是处于运行状态的活动,因为这会带来非常差的用户体验。暂停状态:当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。你可能会觉得既然活动已经不在栈顶了,还怎么会可见呢?这是因为并不是每一个活动都会占满整个屏幕的,比如对话框形式的活动只会占用屏幕中间的部分区域,你很快就会在后面看到这种活动。处于暂停状态的活动仍然是完全存活着的,系统也不愿意去回收这种活动(因为它还是可见的,回收可见的东西都会在用户体验方面有不好的影响),只有在内存极低的情况下,系统才会去考虑回收这种活动。停止状态:当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。系统仍然会为这种活动保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的活动有可能会被系统回收。销毁状态:当一个活动从返回栈中移除后就变成了销毁状态。系统会最倾向于回收处于这种状态的活动,从而保证手机的内存充足。
3.活动的生存期Activity类中定义了七个回调方法,覆盖了活动生命周期的每一个环节,下面我来一一介绍下这七个方法。1. onCreate()这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布局、绑定事件等。2. onStart()这个方法在活动由不可见变为可见的时候调用。3. onResume()这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。4. onPause()这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。5. onStop()这个方法在活动完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法并不会执行。6. onDestroy()这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。7. onRestart()这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。以上七个方法中除了onRestart()方法,其他都是两两相对的,从而又可以将活动分为三种生存期。1. 完整生存期活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期。一般情况下,一个活动会在onCreate()方法中完成各种初始化操作,而在onDestroy()方法中完成释放内存的操作。2. 可见生存期活动在onStart()方法和onStop()方法之间所经历的,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源。比如在onStart()方法中对资源进行加载,而在onStop()方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。3. 前台生存期活动在onResume()方法和onPause()方法之间所经历的,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也这个状态下的活动。
前面我们已经说过,当一个活动进入到了停止状态,是有可能被系统回收的。那么想象以下场景,应用中有一个活动A,用户在活动A的基础上启动了活动B,活动A就进入了停止状态,这个时候由于系统内存不足,将活动A回收掉了,然后用户按下Back键返回活动A,会出现什么情况呢?其实还是会正常显示活动A的,只不过这时并不会执行onRestart()方法,而是会执行活动A的onCreate()方法,因为活动A在这种情况下会被重新创建一次。这样看上去好像一切正常,可是别忽略了一个重要问题,活动A中是可能存在临时数据和状态的。打个比方,MainActivity中有一个文本输入框,现在你输入了一段文字,然后启动NormalActivity,这时MainActivity由于系统内存不足被回收掉,过了一会你又点击了Back键回到MainActivity,你会发现刚刚输入的文字全部都没了,因为MainActivity被重新创建了。如果我们的应用出现了这种情况,是会严重影响用户体验的,所以必须要想想办法解决这个问题。查阅文档可以看出,Activity中还提供了一个onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,比如可以使用putString()方法保存字符串,使用putInt()方法保存整型数据,以此类推。每个保存方法需要传入两个参数,第一个参数是键,用于后面从Bundle中取值,第二个参数是真正要保存的内容。在MainActivity中添加如下代码就可以将临时数据进行保存:@Overrideprotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); String tempData = "Something you just typed"; outState.putString("data_key", tempData);}数据是已经保存下来了,那么我们应该在哪里进行恢复呢?细心的你也许早就发现,我们一直使用的onCreate()方法其实也有一个Bundle类型的参数。这个参数在一般情况下都是null,但是当活动被系统回收之前有通过onSaveInstanceState()方法来保存数据的话,这个参数就会带有之前所保存的全部数据,我们只需要再通过相应的取值方法将数据取出即可。修改MainActivity的onCreate()方法,如下所示:@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate"); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); if (savedInstanceState != null) {
String tempData = savedInstanceState.getString("data_key");
Log.d(TAG, tempData); } &&}取出值之后再做相应的恢复操作就可以了,比如说将文本内容重新赋值到文本输入框上,这里我们只是简单地打印一下。不知道你有没有察觉,使用Bundle来保存和取出数据是不是有些似曾相识呢?没错!我们在使用Intent传递数据时也是用的类似的方法。这里跟你提醒一点,Intent还可以结合Bundle一起用于传递数据的,首先可以把需要传递的数据都保存在Bundle对象中,然后再将Bundle对象存放在Intent里。到了目标活动之后先从Intent中取出Bundle,再从Bundle中一一取出数据。标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/ahao214/p/5104022.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!让学习驱动您的世界
查字典教育系列APP
语文、作文、板报等APP
客户端二维码
手机浏览器打开查字典
1、直接输入 m.chazidian.com
2、扫描二维码,用手机
访问查字典手机版
Mono For Android 无法启动模拟器
[摘要]使用了Xamarin离线包安装软件的朋友,可能会遇到这样一个问题:AndroidSDKnotfound.Pleasecheckwhether...
&使用了Xamarin离线包安装软件的朋友,可能会遇到这样一个问题:Android SDK not found. Please check
whether all the components are installed and that Xamarin.Android configuration
points to an existing Android SDK path。
Mono For Android 无法启动模拟器,提示:Android SDK not found Android SDK找不到的解决方法
原因分析:
这个问题是因为大家没有设置Android SDK路径,所以Mono For Android的VS插件找不到这个路径。
Android 4.0 SDK下载4.0.3 R2 官方最新版_冰淇淋三明治
解决方法:
VS菜单栏&&工具&&选项&&Xamarin&&change&&设置你的SDK路径。
需要特别说明的是:
如果你的电脑,只安装了VS2012,那么工具&&选项&&Xamarin
设置面板是无法编辑的,会提示出错,唯一办法:老老实实卸载Xamarin插件,把VS2010也安装上去,然后重装一次Xamarin Mono For
Android插件。
手机子分类新手使用Android Studio会遇到的两个问题和解决办法
互联网 & 发布时间: 14:33:57 & 作者:佚名 &
刚开始学习Android Studio的时候会遇到一些问题,今天给大家分享遇到次数比较多的两个问题,本文附带详细的解决办法和步骤,需要的朋友可以参考下
初次运行Android Studio时,会遇到&Fetching Android SDK component information&对话框去获取Android SDK组件的信息。因为网络被墙或其他原因,这个获取的过程可能需要很长的时间,所以存在一直无法打开或者打开失败的问题。第二个问题是,在Android Studio中新建项目时有时会遇到&Your android sdk is out of date or is missing templates&的问题,这个问题是你使用了软件默认的sdk安装路径所导致的。
下面具体介绍如何解决这两种问题。
1、初次运行Android Studio时,会遇到&Fetching Android SDK component information&对话框去获取Android SDK组件的信息。因为网络被墙或其他原因,这个获取的过程可能需要很长的时间,而且也不一定能成功获取,所以存在一直无法打开或者打开失败的问题。
关于这个问题最好的解决办法就是不去获取Android SDK组件的信息,因此我们就需要修改自己安装目录(作者安装路径为C:\Program Files\Android\Android Studio\bin)下的&idea.properties&文件内容,使用文本编辑器打开该文件,最后在文件末行加上&disable.android.first.run=true&保存即可。
2、在Android Studio中新建项目时有时会遇到&Your android sdk is out of date or is missing templates&的问题,这个问题是你使用了软件默认的sdk安装路径所导致的。
这个问题的解决办法是,重新配置sdk的安装路径。默认路径为C:\Users\UserName\AppData\Local\Android\sdk,这是后就需要将此目录配置到Android Studio中。(注意:UserName为用户名,根据个人电脑设置不同)
有的朋友也有可能遇不到这两个问题,不过遇到的朋友比较多罢了。
相关推荐:
大家感兴趣的内容
12345678910
最近更新的内容诛仙手游 - 游戏下载
二维码下载
二维码下载
温馨提示:如果苹果正版点击没反应,请用手机扫描下载~
诛仙手游更新后版本不匹配怎么办? 当前设备机型较陈旧
&&09:56:59&&&&&&&&&
来源:&&&&&&&&
作者:盖世兔&&&&&&&&
访问量:2779
大小:537M
版本:1.121.0
平台:安卓,苹果
  更新后怎么办?很多玩家在新版本更新以后,都在道法上得到大幅度的提升了,而还有一部分玩家一直更新不了啊,出现了更新后不匹配,还有当前设备机型比较陈旧的提示,那么遇到这样的问题,该怎么办才好呢?下面就和小编一起来看这篇攻略吧!
电脑玩更爽,同步手机端【】模拟器,一键安装,8888元宝限时等你来抢
  诛仙手游更新后版本不匹配怎么办?
  在24号更新以后,很多玩家都在加星魂、弄培元了,一部分玩家还处在崩溃的边缘,好像每次更新都会出现点问题,很多人出现了下面这样的问题
  版本不匹配、当前设备机型较陈旧无法运营游戏的问题。
  玩家们要是出现了这样的问题,可以尝试着下载下面的这个安装包就可以解决了噢!
  诛仙手游安卓版最新下载地址:【】
  欢迎玩家专区下载诛仙手游安卓客户端,只需要在百度输入【】就可以直接下载安装包,同时诛仙手游攻略专区提供装备选择及副本打法攻略。丰富多类的手机网游下载,尽在琵琶网。
狂送1288绑定元宝+永久绝版坐骑,,每日限量先到先得!
手机浏览器扫描-免费领取礼包
扫描二维码下载琵琶网游戏APP:
1.搜索“诛仙手游”,免费领取诛仙手游最新礼包;
2.订阅“诛仙手游”,随时掌握礼包动向;
3.许愿“诛仙手游”礼包,我们帮您实现;
4.琵琶网游戏下载:
微信扫一扫-礼包攻略通通到手
微信扫一扫关注琵琶网公众号:
1.扫描二维码或搜索微信号,关注“琵琶网手游”;
2.回复“诛仙手游”,即可查看诛仙手游最新礼包和资讯;
还没关注的小伙伴,赶紧扫一扫吧~
14541人下载
扫描安装到手机
60692人下载
扫描安装到手机
57256人下载
扫描安装到手机
390136人下载
扫描安装到手机
136329人下载
扫描安装到手机
232618人下载
扫描安装到手机
207962人下载
扫描安装到手机
313885人下载
扫描安装到手机
2722164人下载
扫描安装到手机
1345888人下载
扫描安装到手机
352149人下载
扫描安装到手机
393508人下载
扫描安装到手机
426365人下载
扫描安装到手机
1145241人下载
扫描安装到手机
1402637人下载
扫描安装到手机
352486人下载
扫描安装到手机
517509人下载
扫描安装到手机
522789人下载
扫描安装到手机
06-23 11:00新服虎啸
06-16 12:00新服潇湘
06-15 12:00新服潇湘
06-14 11:00飞流九天
扫一扫下载
诛仙手游攻略扫码加入我们
& 2017 内容协议

我要回帖

更多关于 问题处理报告 的文章

 

随机推荐