Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解
前言
大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢
Activity是什么
作为一个Activity,就是一个界面,当我们在手机上打开一个APP时,你看到的页面就是基于Activity生成的。
那么你再点击一个按钮跳转到另一个界面时,就是又一个Activity界面,由Activity可以分出很多的知识点。
如,Activity的生命周期,activity的启动方式,还有如果两个activity的数据交互,就是页面和页面之间的数据交互,如,你在另一个界面上输入的数据,保存到另一个页面上,进行显示效果;activity的启动相关知识。
activity生命周期逻辑
首先调用onCreate()的方法来创建一个Activity,然后调用onStart()的方法和onResume()的方法,我们才能看到创建的界面。
如:activity -> onCreate()-onStart()-onResume()
凡是调用完这三个方法,才能看见页面即是activity。
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart(){
super.onStart();
}
@Override
protected void onResume(){
super.onResume();
}
@Override
protected void onRestart(){
super.onRestart();
}
@Override
protected void onPause(){
super.onPause();
}
@Override
protected void onStop(){
super.onStop();
}
@Override
protected void onDestroy(){
super.onDestroy();
}
如果点击back,就是手机上有个返回键,回退,那么会启动那些方法呢,答,会启动 onPause()->onStop()->onDestroy()方法。然后你打开的界面就会退回你打开界面时之前的效果,就是返回到你没点击APP手机页面效果。
整个启动到退回(从创建到销毁):
onCreate()->Created->onStart()->Started->onResume()->Resumed->onPause()->Paused->onStop()->Stopped->onDestroy()->Destroyed
onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()
- 可见状态:onCreate()->onStart()->onResume()
- 不可见状态:onPause()->onStop()
- 销毁状态:onDestory()
从一个页面跳转到另一个页面
两个activity进行交互,周期是怎么样的呢,交互就是一个页面跳转到另一个页面效果。
调用了哪些方法:
MainActivity onCreate()->MainActivity onStart()->MainActivity onResume()->MainActivity() onPause()->SecondActivity onCreate()->SecondActivity onStart()->SecondActivity onReume()->MainActivity onStop()
这样更看得懂了哦~
MainActivity onCreate()->MainActivity onStart()->MainActivity onResume()
MainActivity() onPause()
SecondActivity onCreate()->SecondActivity onStart()->SecondActivity onReume()
MainActivity onStop()
如果显示第二个页面,再点击back,那么就会回到第一个界面了。
那么这个过程调用了什么方法:
SecondActivity onPause()->MainActivity onRestart()->MainActivity onStart()->MainActivity onResume()->SecondActivity onStop()->SecondActivity onDestroy()
这样更看得懂了哦~
MainActivity onCreate()->MainActivity onStart()->MainActivity onResume()
MainActivity() onPause()
SecondActivity onCreate()->SecondActivity onStart()->SecondActivity onReume()
MainActivity onStop()
SecondActivity onPause()
MainActivity onRestart()->MainActivity onStart()->MainActivity onResume()
SecondActivity onStop()->SecondActivity onDestroy()
在这里你会注意到 onPause() 这个方法,当跳转到别的界面的时候,会先调用onPause()的方法,MainActivity跳转到SecondActivity时会先调用 MainActivity onPause()的方法,那么SecondActivity跳转到MainActivity的时候回用 SecondActivity onPause()的方法。
问:如果在这里你会问 onRestart()的这个方法,你这个靠英语理解一下就可知道的,重新启动,那么会问为什么不onCreate()的方法,因为MainActivity()的这个已经创建了,所以就不用而用onRestart()的方法。
onPause()这个方法是代表停止状态,如果第一个界面跳转另一个界面,先停止第一个界面的状态,这样另一个界面的打开,就会保证了没有第一个界面的如何效果,因为被暂停了嘛。
MainActivity onStop()放在 SecondActivity onCreate() 之前会导致什么呢,会出现闪退效果的。onStop()调用,后台运行,不会销毁。
竖屏与横屏周期
什么是竖屏与横屏周期,就是手机上有横屏看,和竖屏看的效果,周期也是有不一样的。
调用的方法,由竖屏变化横屏:
onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()
onCreate()->onStart()->onResume()
竖屏与横屏切换会闪屏效果,这是创建到销毁到创建的效果。
Activity的启动方式
一种是直接,一种是匿名。不同的启动方式有什么不同的效果呢。
直接启动方式:
Intent intent = new Intent(MainActivity.this,SecondActivity.class):
startActivity(intent);
当使用隐式时,我们需要知道如何处理它。
setComponent(ComponentName)
跳转浏览器
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri url = Uril.parse("http://jianshu.com");
intent.setData(url);
startActivity(intent);
跳转相册
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivity(intent);
发送信息
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,"I am a vic"):
startActivity(intent);
打开电话
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri url=Uri.parse("tel:123456789");
intent.setData(url):
startActivity(intent);
Intent相关介绍
Intent是要执行的操作的抽象描述。
ACTION_VIEW:显示关于标识符为“1”的人的信息
tel:123 - 显示填入给定号码的电话拨号程序
type :数据的显式类型
ACTION_ANSWER:处理来电
ACTION_BATTERY_LOW:设备电池电量不足
ACTION_GET_CONTENT:允许用户选择特定类型的数据并将其返回
ACTION_HEADSET_PLUG:插入有线耳机或拔下插头
setData:设置数据
setAction :设置要执行的一般操作等。
如果觉得不错,那就点个赞吧!❤️
总结
- 本文讲了Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解,如果您还有更好地理解,欢迎沟通
- 定位:分享
Android&Java知识点,有兴趣可以继续关注
Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的更多相关文章
- Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式
Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...
- Android开发工程师文集-相关控件的讲解,五大布局
前言 大家好,给大家带来Android开发工程师文集-相关控件的讲解,五大布局的概述,希望你们喜欢 TextView控件 TextView控件有哪些属性: android:id->控件的id a ...
- Android开发工程师文集-Android知识点讲解
前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...
- Android开发工程师文集-1 小时学会Widget小组件开发
前言 大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢 学会用Widget (小组件) Widget小组件很方便,很快捷,可以个性化,自己定制,相 ...
- Android开发工程师文集-layout_weight讲解
前言 大家好,给大家带来Android开发工程师文集-layout_weight讲解的概述,希望你们喜欢 Layout_weight的相关代码展示 <TextView android:layou ...
- Android开发工程师文集-1 小时学会各种Drawable
前言 大家好,给大家带来Android开发工程师文集-1 小时学会各种Drawable的概述,希望你们喜欢 Drawable介绍 Drawable为抽象类,drawable与view有区别的地方,主要 ...
- Android开发工程师文集-1 小时学会SQLite
前言 大家好,给大家带来Android开发工程师文集-1 小时学会SQLite的概述,希望你们喜欢 内容 什么是Sqlite: 效率高,开源,小型,程序驱动,支持事务操作,无数据类型,可嵌入的关系型数 ...
- Android学习路线(十二)Activity生命周期——启动一个Activity
DEMO下载地址:http://download.csdn.net/detail/sweetvvck/7728735 不像其他的编程模式那样应用是通过main()函数启动的.Android系统通过调用 ...
- Android-管理Activity生命周期 -暂停和恢复一个Activity
在正常的使用app时,前台的activity有时候会被可见的组件阻塞导致activity暂停.比如,当打开一个半透明的activity(就像打开了一个对话框),之前的activity就会暂停.只要ac ...
随机推荐
- 多个css样式合并到一个“目录”css文件中
执行访问jsp后发现没有效果 同样的代码,在html中效果对比如下: 具体原因:不清楚,暂时记着~~~在jsp中不支持@import这种css样式的引用
- json&pickle&shelve模块
之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了 ...
- Codeforces Round #437 B. Save the problem!
题意: 给你一个方案数,要求你输出满足该条件的总金额,面值数,和各个面值是多少,答案有多个,随便输出一个即可. Examples Input 18 Output 30 41 5 10 25 Input ...
- Java 学习笔记提高篇
Java笔记(提高篇)整理 主要内容: 面向对象 异常 数组 常用类 集合 IO流 线程 反射 Socket编程 1. 面向对象 1.1包 用来管理Java中的类, 类似文件夹管理文件一样. 因 ...
- mybatis-generator 覆盖新增XML
参考文章:https://www.cnblogs.com/xxoome/p/10068780.html 1.添加依赖(版本1.3.7) plugin> <groupId>org.my ...
- 数据库-1055报错-把only_full_group_by去掉
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c ...
- 使用requests抓取https报SSL错误
安装requests的方法:sudo pip install requests 当碰到requests链接https的时候报SSL错误的时候使用如下解决: 1:将python的pip 版本升级到9.0 ...
- 题目--oil Deposits(油田) 基础DFS(深度搜索)
上一次基本了解了下BFS,这次又找了个基本的DFS题目来试试水,DFS举个例子来说就是 一种从树的最左端开始一直搜索到最底端,然后回到原端再搜索另一个位置到最底端,也就是称为深度搜索的DFS--dep ...
- xcode项目打不开:incompatible project version问题
低版本xcode打开高版本xcode项目或库工程的时候就会出现,打不开的问题 解决 1可以重建创建工程,将文件拷贝到新工程 2 相对一,较简单 找到.xcodeproj文件 右键 显示包内容,找到pr ...
- 【开发工具】secureCRT的使用
总结自己平时使用secureCRT中遇到的问题 1.安装 2.secureCRT设置标签显示远程主机ip地址