Android基础-----Activity,Intent
2016-01-06 10:20
363 查看
1.Activity概述
1.主要负责与用户进行交互,存放view的地方2.所有的activity都会放在一个栈中
2.Activity的生命周期
注意:
1.一般初始化在onCreate()中
2.当一个Activity没有被销毁,但是要重新调用数据的时候,可以在onstart()方法中调用方法,不建议在onResume()中写,会有延迟
3.当一个Activity跳转到另一个Activity:
A:onPause()-B:onCreate()-B:onStart()-B:onReasume()-A:onStop-A:onDestory()
3.Activity的创建方式
1.修改方法:AndroidManifaest.xml ->activity ->android:launchMode=standard | singleTop | singleTask | singleInstance
standard
标准启动模式,不指定启动模式的时候默认采用这种方式
当这个activity被调用的时候无论任务栈中是否已经存在,都会重新创建一个新的activity
singleTop
当一个activity在栈顶的时候,这个activity不会被重新创建
当不再栈顶的时候,这个activity会被重新创建
singleTask
当一个activity已经存在与任务中的时候,这个activity不会被重新创建,而是在任务栈中取出,并且把这个activity上面的activity全部销毁,一个任务栈中只有一个这个activity实例
singleInstance
这个activity会被放进一个新的任务栈中,并且这个任务栈中只有一个activity,不能有其他的activity
实例:例如电话的键盘activity,就是一个这种模式,所有的其他任务调用电话键盘都不会重新创建一个activity,而是调用的同一个activity
4.Activity的退出时候状态保存
方法: onSaveInstanceState(Bundle outState)通过bundle对象保存相关信息,这个活动在oncreate中的bundle中可以获取这些信息
Bundle:存放的数据类型:
1.是一个map数据类型,通过键值对来存储信息
2.存储类型:
1.基本数据类型和String类型
2.基本数据类型数组和String类型数组
3.Parcelable类型及Parcelable类型数组
4.Serializable类型(无Serializable类型数组!)
5.ArrayList
5.Activity的横竖屏幕切换
1.屏幕在切换的时候默认会先销毁当前activity,然后重新创建一个新的activity在AndroidMeafest.xml中:这样就不会重新调用oncreate方法
android:configChanges=”keyboardHidden|screenSize|orientation”
写死横竖屏幕:
android:screenOrientation=”portrait” | “landscape”
Activity中:
竖屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
横屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
——————————————————–
Intent
Intent分为显示Intent和隐式Intent显示Intent:
1启动活动/服务/广播1.1 Intent intent = new Intent(MainActivity.this,AAA.class);
也可以通过包名启动
1.2 startActivity(intent);
2.设置data数据
2.1
<activity> //用于指定数据的写一部分,如:http ,tel <data android:scheme="http" /> //指定主机名 <data android:host="" /> //指定端口 <data android:port="" /> //指定路径 <data android:path="" /> //指定mimetype <data android:mimeType="" />
2.2 intent.setData(Uri.parse(“aaa”));
Uri.parse(“aaa”):把一个字符串编程uri对象
Uri.fromFile(file):获取一个文件的uri
3 Activity之间Intent传输数据
3.1intent可以存放基本数据类型/String类型/bundle类型
//传输ArrayList集合 intent.putIntegerArrayListExtra(name, value); //可以传入bundle/Serializable/Parcelable对象 intent.putExtras(src);
3.2 接收数据
getIntent().getParcelableExtra(name); getIntent().getSerializableExtra(name); getIntent().getExtras(); getIntent();
4 获取返回的数据
4.1 startActivityForResult(intent, requestCode);启动一个活动
4.2 重写onActivityResult
@Override protected void onActivityResult(int arg0, int arg1, Intent arg2) { super.onActivityResult(arg0, arg1, arg2); }
4.3 注意 : 开启的Activity必须调用finish()方法才能获取返回的数据
隐式Intent:
1.启动活动/服务/广播1.1设置Activity的action和category ,category 一般是Default
<intent-filter> <action android:name="android.intent.action.AAA" /> <category android:name="android.intent.category.Default" /> </intent-filter>
1.2在Activity中
Intent intent = new Intent(); intent.setAction("android.intent.action.AAA"); intent.addCategory("android.intent.category.Default"); startActivity(intent);
Parcelable和Serializable区别
Parcelable : 是写入到内存中,这样读写速度快,但是有可能会造成oom异常
Serializable : 是写入到本地文件中,然后在读取文件,写入速度慢
Parcelable: bitmap实现了这个接口,所以能直接传递
import android.os.Parcel; import android.os.Parcelable; public class Persion implements Parcelable { private String name; private int age; //默认返回0,不用修改 @Override public int describeContents() { return 0; } //写入数据 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } //格式固定,CREATE:名称固定,不能改变 public static final Parcelable.Creator<Persion> CREATE = new Parcelable.Creator<Persion>() { @Override public Persion createFromParcel(Parcel par) { Persion persion = new Persion(); //这里的顺序和写入的顺序必须相同,否则会出问题 persion.name = par.readString(); persion.age = par.readInt(); return persion; } @Override public Persion[] newArray(int arg0) { //返回这个类型的数据,格式固定 return new Persion[arg0]; } }; }
相关文章推荐
- Android:图形(二)
- Android中跨进程通讯的4种方式
- Android库工程及代码混淆(project.properties、proguard-project.txt)
- android 监听键盘弹出收起状态
- Android 加密之MD5加密
- Android单元测试研究与实践
- android初学之android:screenOrientation属性
- Failed to resolve: com.android.support:support-v4:23.1.1
- android 监听Home键和亮灭屏
- Android M 新的运行时权限开发者需要知道的一切
- Android不调用第三方程序发送邮件
- android 判断应用是否在后台
- Android实现点击通知栏通知恢复前台
- Android开发之imageView图片按比例缩放的实现方法
- Android使用Fragment打造万能页面切换框架
- Android - 使用Intent来启动Activity
- Android5.x之沉浸式状态栏
- Android开发之读写联系人
- Android 使用Parcelable传递对象
- Android开发之Button事件实现与监听方法总结