1.2Android 学习+进度之二
直接通过new来创建Activity,可以进行自动注册在清单里,你要是人工写,然后继承类,就得以自己改清单文件,容易忘记(新版本不知道有没有这个优化)。
Activity的什么周期。
1.启动状态(短暂,进入下一个状态)
2.运行状态,这个状态处于屏幕最前端,有焦点的(所谓的界面切换就是切换这个是吧?)
3.暂停状态,出现个对话框,后面的应该就算暂停吧,失去焦点,无响应。
4.停止状态,完全不可见,进入后台了呗,内存不足,这种就被处理掉了
5.销毁装填,被清理出内存
盗个图:
对应7个方法
1.onCreate()
2.onStart()在可见时调用
3.onResume()获取焦点开始于用户交互
4.onParuse()被其他Activity或者锁屏时调用
5.onStop()不可见时
6.onDestroy()销毁时
7.onRestart()停止状态再次启动
第一次运行程序时,首先调用1,其次2,再3;退出,先4,再5,最后6。
PS:书上说横竖屏切换的时候,先回销毁Activity然后重建Activity,不需要得单独设置
各种Activity覆盖,新建再覆盖,因此有个叫做任务栈的东西。恩,能理解
Activity有4种启动方式。
1.standard模式,默认。每启动一个Activity都会在栈顶产生一个新的实例。假如A在栈顶,还要产生个A,此时整个模式会再新建一个A
2singleTop模式,2是解决1的问题,判断要产生的是否在栈顶,加入在,直接复用。。那肯定有,假如在栈列表,从中间挖到上面去。。
3singleTask模式,和我想的不太一样,的确是只有单独一个,但是假如在栈中,则必须把他之前的全部弹出,然后让这个显示(这么暴力。。)
4singleInstance模式,效果上感觉和我之前说的差不多,但是把一个东西动栈中挖出来,然后还不影响其他的,实在有点难。这里的处理方式是,在这个模式下的Activity,新建的时候干两个事,假如存在,则用,没有,则新建一个任务栈来管理Activity。(用新建来实现,想用就用)来电显示采用这个方法。
Activity之间跳转
intent,分为显示和隐式
显式:
Intent intent = new Intent(this,Activity02.class);
startActivity(intent);
隐式:
Intent intent=new Intent();
intent.setAction("cn.itcast.START_ACTIVITY");
startActivity(intent);
显然的,显式可以启动自己的Activity,隐式还能启动其他程序的Activity。
数据传递,采用putExtra();和GetStringExtra()。传递个下一个打开的Activity。
数据回传,也常见,销毁时数据反馈,startActivityForResult()。
这个项目得用到,在第一个界面点击需要聊天的对象的时候,切换到第二个界面,需要吧聊天的对象,传递到下一个Activity。