Android四大组件之Activity
来源:互联网 发布:威少上赛季每场数据 编辑:程序博客网 时间:2024/06/05 19:54
Activity是安卓中使用最多的一个组件,其用来显示界面,负责与用户的交互。Activity运行与主线程中,不可以在其中直接操作比较耗时的操作,如果超过5秒就会出现ANR,如果直接操作网络就会报错。使用时需要在manifest文件中注册,其继承关系为:Activity-->ContextThemeWrapper--->ContextWrapper--->Context.
生命周期:
直接启动:onCreate()-->onStart()-->onResume()--->onWindowFocuschanged();
启动后按back键:onPause()-->onWindowFocuschanged()--->onStop()-->onDestroy();
启动后按home键:onPause()-->onWindowFocuschanged()--->onStop();
按home键后重新进入:onRestart()-->onStart()-->onResume()-->OnWindowFocusChanged();
竖屏转横屏:onPause()-->onSaveInstanceState()-->onStop()-->onDestroy()-->onCreate()-->onStart()-->onRestoreInstanceState()-->onResume()-->onWindowFocusChanged();
横屏转竖屏:同上
一个Activity跳转到另一个Activity:onPause()-->onWindowFocusChanged()-->onSaveInstanceState()-->onStop();
然后按返回键:onRestart()-->onStart()-->onResume()-->OnWindowFocusChanged();
弹出一个Dialog:OnWindowFocusChanged();
销毁Dialog:OnWindowFocusChanged();
Activity的四种启动模式:
Standard:标准的启动模式,每调用一次Activity都创建一个新的实例。
SingleTop:如果跳转的Activity位于Task的顶部就不创建新的,否则创建新的实例。
SingleTask:创建一个实例,并且位于新的Task里面,再次调用就不会创建新的了。
SingleInstance:只有一个Activity实例,如果不在Task顶部就销毁上面的Activity,如果不存在就创建。
从一个Activity启动另一个Activity有两种启动方式,第一种是需要返回结果的,一种是不需要返回结果的,我看了源码,发现其实不需要返回结果的方法在底层也是调用的返回结果的,只是把请求码改为了-1,。
不需要返回结果的启动:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);intent.putExtras(bundle);startActivity(intent);
需要返回结果的:
// bundle传数据,如果需要传对象,需要把对象实现Parcelable接口Bundle bundle = new Bundle();bundle.putBoolean("isRaining", true);// intent显示启动Intent intent = new Intent(MainActivity.this, SecondActivity.class);intent.putExtras(bundle);startActivityForResult(intent, 2);然后重写onActivityResult()方法:
// 获取返回的数据@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);Log.e(TAG, data.getStringExtra("result"));}
在被启动的SecondActivity里面的代码如下:
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);boolean isRaining = getIntent().getExtras().getBoolean("isRaining", false);Log.e("SecondActivity", isRaining + "");Intent intent = new Intent(this, MainActivity.class);intent.putExtra("result", "你需要打伞");setResult(3, intent);finish();}
注意:如果需要传的数据是一个对象,只需要把这个对象实现Parcelable接口。
扫描关注我的微信公众号:
源码下载:Demo下载
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之 Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android 四大组件之Activity
- android 四大组件之activity
- Android 四大组件之 Activity
- android四大组件之Activity
- 关于们MySQL 插入空值" '' " 与null
- Java基础知识 二(关键字、标识符、注释、数据类型、数据类型的转换)
- android 总结学习 简单的UI控件
- 浅析:横竖屏切换时候Activity的生命周期
- 这些 iOS 面试基础题目,你都深入了解吗?
- Android四大组件之Activity
- SQL 脚本语言知识回顾
- Android ——网络请求框架OkHttp使用
- java源码分析03-InputSteam
- 关于在chrome中调试异步加载的javascript文件
- 梯度下降--监督学习
- SQL Server 索引维护(1)——系统常见的索引问题
- TOMCAT异常 Socket bind failed: [730048]
- C++运算符重载整理