Android回炉系列之四大组件之首Activity
有段时间没有认认真真研习过android了,android毕竟是我进这个软件开发圈子接触的第一门技术,android已经成了口头禅之类的东西了.当初学习android的时候大都是草草了事浮于表面,很多知识点没有深入学习,导致现在基础不是很牢靠.在遇到某些高度技术问题的时候思路容易断,所以我决定用博客来记录回炉学习的过程.网上博客简直多如牛毛,而我想写一些属于自己的东西,就是话比较多比较啰嗦但是很容易理解的东西,不会出现很多让新手看不懂的代码,出现的代码每行我都会注释是什么意思.我一直把自己当新手.剑圣有句台词就说"真正的大师永远怀着一颗学徒的心".哈哈哈,虽然我还不是大师.
首当其冲的就是Activitty,android四大组件之首.几乎可以说是最重要的一个组件.今天就从Activity开始回炉吧.
一.什么是Activity?
Android的四大组件分别是Activty/Service/Broadcast Receiver/Content Provider. Activity翻译过来就是活动的意思,在android里面可以理解成用户能看到的一个界面并且和用户能产生交互.可以说,一个app里面你所有能看到的东西都是Activity.我们可以在一个Activity上放很多东西,比如列表,图片,按钮等等.然后通过别的组件使这些"死"的东西变成"活"的.如何把他们变成活的,都会在后续的博客中陆续更新.
1.1 Activity的生命周期
要学习Activity就不得不提起他的生命周期,至关重要!生命周期中每一段都在Activity的一生中扮演着独一无二不可替代的角色,就像我们人的一生中也有很多至关重要的时期一样.
要了解生命周期就必须对Activity的运行状态有深刻的了解,一个Activity大致经过四个运行状态.
a.运行状态:Activity处于前台,即你可以看的见的,并且可以获得焦点.(获得焦点就是可以操作可以交互的意思)
b.暂停状态:Activity仍然处于前台,仍然可见,但是失去焦点.举一个很常见的场景你就明白了.比如你正在玩微信,此时来了一条短信,这条短信的对话框并没有占满整个屏幕而是一小块,此时你既能操作回复短信,又能看到部分微信的界面但是无法操作微信界面.这时就称当前微信的Activity处于暂停状态.
c.停止状态:Activity不可见,并且失去焦点.比如你从一个人的对话框页面退出了去看朋友圈了,此时就说那个对话框页面Activity处于停止状态.你看不到他了.
d.销毁状态:Activty彻底结束,好比一个人的一生就结束了.只不过人生无法重来,Activity却可以Restart~
当你了解了一个活动的运行状态后就应该去了解下他具体的生命周期是怎么运作的了.每一个运行状态背后都藏着不为人知的生命周期.哈哈~
Activity一共有七个生命周期:onCreat() onStrat() onResume() onPause() onStop() onDestory() onRestart().大家看英文就应该能大致知道他们各自的意思.细心的话可以发现他们是首尾对应的.
//onCreat是生命周期的第一个方法,意思就是创建!也就是说当一个Activity创建的时候是调用这个方法.在这方法里可以做一些初始化操作,比如加载布局,初始化方法等等
@Override protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);}
//onStart是当Activty创建好之后显示到屏幕上时调用的方法,也就是说此时你可以看到Activity但还不能交互
@Override protected void onStart() {
super.onStart(); }
//onResume被回调的时候就是可以和Activity产生交互了 比如你点击一些按钮,图片什么的
@Override protected void onResume() {
super.onResume(); }
//onPause方法即暂停 这个方法就是在上面提到的暂停状态的时候调用,比如你正在发短信突然来了个电话此时就需要调用这个方法来保存你正在发短信的页面,可以在里面写一些方法用来保存你正在输入的内容,不然等你电话挂了 你打的短信内容全都没了,嗯这种用户体验谁都不想要有吧? 这就是这个方法的作用!
@Override protected void onPause() {
super.onPause(); } //onStop方法即是停止 紧跟在onPause后面调用 一个活动要想停止,首先得暂停 比如你按home键并不按返回键,此时只是将Activity最小化并没有销毁
@Override
protected void onStop() {
super.onStop();
}
//onDestory即销毁 紧跟在onStop后面 同理一个活动要销毁前必须先停止
@Override
protected void onDestroy() { super.onDestroy();
}
//onRestart方法即重启 当一个Activity被销毁后系统重新开启这个activity是调用这个方法
@Override
protected void onRestart() { super.onRestart();
}
如果说这样的话你依然对生命周期的过程不完全理解的话,我只能说那很正常,因为我写的不太好!建议大家用log的方法将日志打印出来,在两个Activity之间来回切换看看这些方法到底怎么调用的.
Android回炉系列之四大组件之首Activity的更多相关文章
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- Android的四大组件之Activity
Android的四大组件之Activity Activity:是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,B ...
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android 四大组件之 Activity(一)
1.Activity的定义及作用: Android系统中的四大组件之一,可以用于显示View.Activity是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的一个应用程序的组 ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- 【Android】安卓四大组件之Activity(二)
[Android]安卓四大组件之Activity(二) 前言 在这篇文章之前,我已经写过了一篇有关Activity的内容,是关于activity之间的页面跳转和数据传递,而这篇文章着重强调的是Acti ...
- 【Android】安卓四大组件之Activity(一)
[Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...
- 安卓四大组件之一activity
概要说明 Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播 ...
随机推荐
- WebStorm 配置 svn
1.下载 SlikSVN. 2.安装.路径 D:\Program Files\slik\bin. 3.在WebStorm中配置 file->settings->Version Co ...
- 如何在IE11中设置兼容模式?设置的具体方法
IE11浏览器软件版本:简体中文正式版 For Win7网络工具立即查看 1.同样进入需要兼容性模式的网站,点击菜单栏位工具--F12开发者人员工具!如下图所示. 2.在开发者选项左下侧菜单栏位,点击 ...
- Jmeter中使用CSV Data Set Config
A
- 莫烦大大TensorFlow学习笔记(9)----可视化
一.Matplotlib[结果可视化] #import os #os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf i ...
- 【LeetCode算法】LeetCode初级算法——字符串
在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...
- Django的时间字段DateTimeField
一. Django的时间字段DateTimeField 创建django的model时,有DateTimeField.DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着 ...
- Project Euler 24 Lexicographic permutations( 康拓逆展开 )
题意: 排列指的是将一组物体进行有顺序的放置.例如,3124是数字1.2.3.4的一个排列.如果把所有排列按照数字大小或字母先后进行排序,我们称之为字典序排列.0.1.2的字典序排列是:012 021 ...
- Mybatis-Plus的BaseMapper的使用
Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段. 下面简单举例,调用Base ...
- 【hdu 6396】Swordsman
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 开k个优先队列.每个队列都满足从小到大那种.. 首先将所有的怪物加入到第一个队列中. 然后对于v[i]>=pq[i].top( ...
- nyoj 42判断欧拉路径模板题
#include<stdio.h> #include<string.h> #define N 2100 int degree[N]; int pre[N];//很长时间没写欧拉 ...