Android Activity 知识点全面总结
来源:互联网 发布:高性价比液晶电视 知乎 编辑:程序博客网 时间:2024/05/04 16:19
转载请标明出处:
http://blog.csdn.net/tyzlmjj/article/details/47375469
本文出自:【M家杰的博客】
概述
android四大组件之一的Activity一般是初学者最先认识的组件,既熟悉也陌生。
生命周期
onResume():在此方法之后Activity才正式进入用户的视线(可视状态)。
onPause():当跳转到别的页面,Activity一般将进入后台执行此方法。
onStop():当Activity长时间处于后台时调用。
onDestroy():当Activity要被销毁时调用。
onRestart():当Activity处于后台,且未被回收时,重新回到此Activity调用。
当Activity处于后台,且系统需要更多内存时,Activity将被回收,当想回到此Activity时会重构,从onCreate()开始重来。
最常用的生命周期一般是onCreate()和onPause()。在onCreate()中初始化Activity,在onPause()中处理Activity被切换到后台的操作。在实际操作中,有时会出现onStop()和onDestroy()没有被调用的特殊情况,写在其中的方法当然也无法执行,这种情况下onPause()就显尤为重要了。
- AActivity –>启动 BActivity 生命周期变化:
A:onPause()---> B:onCreate()-->B:onStart()-->B:onResume()-->A:onStop()
- BActivity 点击返回键 生命周期变化:
B:onPause()-->A:onRestart()-->A:onStart()-->A:onResume()-->B:onStop()-->B:onDestroy()
- 横竖屏切换 生命周期:
onPause()-->onSaveInstanceState-->onStop()-->onDestroy()-->onCreate()-->onStart()-->onResume
Activity启动方式
直接启动
Intent intent = new Intent();ComponentName componentName = new ComponentName(this, SecondActivity.class);intent.setComponent(componentName );startActivity( intent);
匿名启动
1.在XML中设置活动
<activity android:name=".SecondActivity" > <intent-filter> <action android:name="活动名称" /> <category android:name ="android.intent.category.DEFAULT"/><!--用于指定当前动作(Action)被执行的环境 --> </intent-filter></activity>
2.启动活动
Intent intent = new Intent();intent.setAction( "活动名称");startActivity( intent);
数据传递
传递Object对象
1.创建可序列化模型
class User implements Serializable{ private String name; private String ID; public User(String name, String iD) { this.name = name; ID = iD; } @Override public String toString() { return "[name:"+name+" ID:"+ID+"]"; }}
2.发送数据
Intent intent = new Intent(MainActivity.this,SecondActivity.class);Bundle bundle = new Bundle();User user = new User("MJJ","007");bundle.putSerializable("user", user);intent.putExtras(bundle);startActivity(intent);
3.接收数据
User user = (User) getIntent().getSerializableExtra("user");
传递Bitmap等对象
1.发送数据
bundle.putParcelable("bitmap",bitmap);
2.接收数据
Bitmap bitmap = getIntent().getParcelableExtra("bitmap");
异常
传递大数据时会出现异常TransactionToolargeException
所以不要传递过大的数据
Task & Back Tack
由同一个应用启动的Activity默认都在同一个任务栈中(Task)
任务栈的形式和学习C语言的栈是一样的遵循后进先出的原则,看图很好理解
启动模式
android:launchMode
standard(默认)
默认创建新的实例,可以创建多个同名的Activity实例
singleTop
假设有A–>B–>C–>D四个Activity, D为栈顶
- 当D启动自己
时,不会创建新的Activity,会调用onNewIntent()
方法
- 当D启动别的Activity
时,任然会创建新的Activity
可以理解为只有栈顶元素是单例的
singleTask
单例,不可创建重复的Activity
- 当Activity已经存在,调用onNewIntent()
方法,同时在想启动的Activity之前的栈内Activity都会被销毁
- 不存在,则创建新的
singleInstance
跟singleTask类似,也为单实例,唯一的区别在于启动的Activity位于不同的Task(栈)中
- Android Activity 知识点全面总结
- Android Activity 知识点全面总结
- android Activity 全面总结
- 一篇文章,全面总结Android面试知识点
- 一篇文章,全面总结Android面试知识点
- android开发小知识点之Activity总结
- Android四大组件之一(Activity知识点总结)
- Activity生命周期全面总结
- Android 开发需要掌握的技术知识点全面总结
- Android Activity全面解析
- Android Activity全面解析
- Android Activity全面解析
- Activity知识点总结
- Android学习日志之二:Activity知识点总结
- android四大组件之activity知识点最强总结
- Android activity的知识点
- Android Activity知识点
- Android知识点之Activity
- [NT API] Open Any Registry Key for Full Access
- 搭建SpringMVC框架
- Android工程各个文件夹的功能区别
- hdu 5366 排列组合
- ASP.NET MVC5(1)返回字符串+路由解析设置
- Android Activity 知识点全面总结
- HDU-OJ Problem - 1042 N!
- 数据恢复教程
- struts工作原理
- 面向对象的设计步骤
- 通过AOP方式实现Service计算结果的缓存
- forward与redirect的区别
- android中Activity.startManagingCursor(cursor)方法详解
- 【leetcode~Shell】:Tenth Line