前言

大家好,给大家带来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详细讲解的更多相关文章

  1. Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式

    Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...

  2. Android开发工程师文集-相关控件的讲解,五大布局

    前言 大家好,给大家带来Android开发工程师文集-相关控件的讲解,五大布局的概述,希望你们喜欢 TextView控件 TextView控件有哪些属性: android:id->控件的id a ...

  3. Android开发工程师文集-Android知识点讲解

    前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...

  4. Android开发工程师文集-1 小时学会Widget小组件开发

    前言 大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢 学会用Widget (小组件) Widget小组件很方便,很快捷,可以个性化,自己定制,相 ...

  5. Android开发工程师文集-layout_weight讲解

    前言 大家好,给大家带来Android开发工程师文集-layout_weight讲解的概述,希望你们喜欢 Layout_weight的相关代码展示 <TextView android:layou ...

  6. Android开发工程师文集-1 小时学会各种Drawable

    前言 大家好,给大家带来Android开发工程师文集-1 小时学会各种Drawable的概述,希望你们喜欢 Drawable介绍 Drawable为抽象类,drawable与view有区别的地方,主要 ...

  7. Android开发工程师文集-1 小时学会SQLite

    前言 大家好,给大家带来Android开发工程师文集-1 小时学会SQLite的概述,希望你们喜欢 内容 什么是Sqlite: 效率高,开源,小型,程序驱动,支持事务操作,无数据类型,可嵌入的关系型数 ...

  8. Android学习路线(十二)Activity生命周期——启动一个Activity

    DEMO下载地址:http://download.csdn.net/detail/sweetvvck/7728735 不像其他的编程模式那样应用是通过main()函数启动的.Android系统通过调用 ...

  9. Android-管理Activity生命周期 -暂停和恢复一个Activity

    在正常的使用app时,前台的activity有时候会被可见的组件阻塞导致activity暂停.比如,当打开一个半透明的activity(就像打开了一个对话框),之前的activity就会暂停.只要ac ...

随机推荐

  1. 002之MFCSocket异步编程

    当今的网络程序通用体系结构大多为C/S模式,服务器监听收到来自客户端的请求,然后响应并作出应答. 界面对话框如下,输入IP信息进行通信后再进行连接,连接成功即可开始通信.左侧为客户端,右侧为服务端. ...

  2. LevelDB源码分析-TableBuilder生成sstable

    TableBuilder生成sstable(include/table_builder.h table/table_builder.cc) LevelDB使用TableBuilder来构建sstabl ...

  3. 简单实用的分页类-python

    django自带的分页虽然挺好,但是就想自己弄个通用的 自己写了个分页的类,用的是python,   其他语言改下语法就能用了. #定义好类.class pagemanage: def __init_ ...

  4. OpenStack 安装:基本环境准备

    刚刚学完openstack,这几篇文章就算对过去课程的一个总结吧. 首先说说基本的结构:在一台Dell的workstation上面安装了VMware,在VMware上面安装两台CentOS,现在给每台 ...

  5. ASP.NET Boilerplate-AbpSession

    /------2016-05-15/------介绍 如果一个应用支持登录,也许需要知道当前登录用户的一些操作,然而ASP.NET 本身对于展现层提供了Session的支持,ABP提供了 IAbpSe ...

  6. 工具类静态方法注入dao

    工具类里的一个静态方法需要调用dao查询数据库,用普通的spring注解注入一直报空指针异常,不能找到这个dao.参考的http://busing.iteye.com/blog/899322 的文章解 ...

  7. python import hashllb

    http://www.cnblogs.com/alex3714/articles/5161349.html 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224 ...

  8. 46 【golang项目】完成了一个小小的播放器功能

    项目地址:https://github.com/helww/mylab/tree/master/go/player 这个项目中用到了readme说明文件是一个markdown文件. 基础的控制语法,网 ...

  9. 28.Mysql权限与安全

    28.Mysql权限与安全28.1 Mysql权限管理 28.1.1 权限系统的工作原理对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接:对通过认证的合法用户赋予相应的权限,用户可以 ...

  10. rsyslog和logrotate

    简介 rsyslog 是一个 syslogd 的多线程增强版. 现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了 rsyslog负责写入日志, logrotate负责备份 ...