转 intent

上一篇 / 下一篇  2013-01-25 00:42:35 / 个人分类:android

android基础05

    博客分类:
  • java开发
1.显示意图三种创建方式:
构造函数,代码少
new Intent(this, NewActivity.class);
类名形式,灵活,可扩展性强
intent.setClassName(this, "cn.itcast.activity.NewActivity");
包名类名形式,可启动其他程序中的Activity
intent.setClassName("cn.itcast.downloader", "cn.itcast.downloader.MainActivity");

2.隐式意图创建Activity
1.显式意图是指在创建意图时指定了组件,而隐式意图则不指定组件,通过动作、类型、数据匹配对应的组件
2.在清单文件中定义<activity>时需要定义<intent-filter>才能被隐式意图启动
3.<intent-filter>中至少配置一个<action>和一个<category>,否则无法被启动
4.Intent对象中设置的action、category、data在<intent-filter>必须全部包含才能启动
5.<intent-filter>中的<action>、<category>、<data>都可以配置多个,Intent对象中不用全部匹配,每样匹配一个即可启动
6.如果一个意图可以匹配多个Activity,Android系统会提示选择

3.通过intent传递数据
1.intent.putExtra(String name,String value); 获取数据:value = getIntent().getString(name)
2.Bundle bundle = new Bundle(); Bundle bundle = intent.getExtras();
  bundle.putString(name,content); content = bundle.getString(name);
  intent.putExtras(bundle);

4.创建Activity获取返回数据
1.使用startActivityForResult(Intent intent, int requestCode) 方法打开Activity
2.重写onActivityResult(int requestCode, int resultCode, Intent data) 方法
3.新Activity中调用setResult(int resultCode, Intent data) 设置返回数据之后,关闭Activity就会调用onActivityResult方法

5.请求码的作用   
请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打
开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的
onActivityResult(int requestCode, int resultCode, Intent data)方法。这时就需要在打开新的activity时设置不同的请求码,
以便能知道是从哪个按钮请求过来的。

6.结果码的作用
在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,
系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自
于哪个新Activity,可以在新开启的activity里调用setResult方法设置结果码。

7.Acitivity三种状态
运行:activity在最前端运行
暂停:activity可见,但前端还有其他acti vity,被覆盖一部分,或者前端activity透明
停止:activity不可见,完全被覆盖

8.生命周期相关方法
onCreate:创建时调用,或者程序在暂停、停止状态下被杀死之后重新打开时也会调用
onStart:onCreate之后或者从停止状态恢复时调用
onResume:onStart之后或者从暂停状态恢复时调用,从停止状态恢复时由于调用onStart,也会调用onResume
onPause:进入暂停、停止状态,或者销毁时会调用
onStop:进入停止状态,或者销毁时会调用
onDestroy:销毁时调用
onRestart:从停止状态恢复时调用

9.当屏幕的方向发生了改变, Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创
建后恢复缓存的数据。可以重写Activity的 onSaveInstanceState() 和 onRestoreInstanceState()方法

10.横竖屏幕切换
默认情况下,当“屏幕方向”或“键盘显示隐藏” 变化时都会销毁当前Activity,创建新的Activity。如果不希望重新创建Activity实例,
可以按如下配置Activity:<activity android:name=".MainActivity" android:configChanges="keyboardHidden|orientation">
上面的android:configChanges属性指定了要捕获“屏幕方向”和“键盘显示隐藏”变化,当捕获到这些变化后会调用Activity的onConfigurationChanged()方法。
如果只希望创建一个实例,可以配置android:configChanges="orientation"

11.Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,
如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。
Bundle的内部实际上是使用了HashMap<String, Object>类型的变量来存放putXxx()方法放入的值.

12.内存管理
Android系统在运行多个进程时,如果系统资源不足,会强制结束一些进程。优先选择哪个进程来结束是有优先级的
1.空:进程中所有Activity都已销毁
2.后台:进程中有一个停止状态的Activity
3.可见:进程中有一个暂停状态的Activity
4.前台:进程中正在运行一个Activity

13.启动模式
在AndroidManifest.xml中的<activity>标签中可以配置android:launchMode属性,用来控制Actvity的启动模式
在Android系统中我们创建的Acitivity是以栈的形式呈现的
1.standard:每次调用startActivity()启动时都会创建一个新的Activity放在栈顶
2.singleTop:如果启动的Activity时,指定Activity不在栈顶就创建,如在栈顶,则不再创建
3.singleTask:如果启动的Activity不存在就创建,如果存在直接跳转到指定的Activity所在位置
4.singleInstance:如果启动的Activity不存在就创建,如果存在就将指定的Activity移动到栈顶,会重新开启一个新的 任务栈

http://blog.sina.com.cn/s/blog_7ec412690100y2vl.html

TAG:

 

评分:0

我来说两句

Open Toolbar