Android之路-------Activity的详解_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android之路-------Activity的详解

Android之路-------Activity的详解

 2015/1/6 17:50:47  Leo's  程序员俱乐部  我要评论(0)
  • 摘要:前言由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字。今天LP的任务完成了,在领导还没分配任务之前再发布一篇关于Activity的博文..........上一篇跟大家分享了Android的发展史、系统框架、还有Android的四大组件,下面LP就为大家介绍下四大组件之一的Activity。知道了Android的历史之后,有没有让Android那种打不死的精神打动了
  • 标签:android 详解 Activity

前言

  由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字。

  今天LP的任务完成了,在领导还没分配任务之前再发布一篇关于Activity的博文..........

  上一篇跟大家分享了Android的发展史、系统框架、还有Android的四大组件,下面LP就为大家介绍下四大组件之一的Activity。

  知道了Android的历史之后,有没有让Android那种打不死的精神打动了,如果有的话就赶紧动身来学Android吧..

  行了,废话不多说     Let's go

目录

  • 活动(Activity)
  • activity谁来管?
  • 它是怎么个生老病死的?
  • 如何去使用它?
  • 兄弟间该如何进行交互?

Android四大组件之一【Activity】

  说到活动相信就算没有android基础的人都知道活动是个什么东西,因为它会经常出现在我们的身边,但是说到Activity,那就不一定了,不过懂一点英语的人直接翻译过来也知道是活动的意思,其实Android的活动和现实生活中的活动很相似,也可以理解为现实生活中的活动,我们正式开始吧。

  说到Android的Activity,它到底是个什么东西呢? 它就是Android系统中的一个组件,专门负责与用户交互的,用户看到的每一个界面就是一个活动。

  在Android中,Activity有基本的四种状态

    1.运行状态  active/running

        处于屏幕的最前端或者正在和用户交互着,称为运行状态/激活状态

    2.暂停状态  Paused

        当前activity失去焦点,被一个窗口或者非全屏的东西遮住一点点和被另一个透明的activity覆盖的时候,称为暂停状态

    3.停止状态  Stoped

        当前activity完全看不到了,称为停止状态

    4.杀死状态  Killed

        当activity处于“暂停状态” Or “停止状态”,这时候系统就可以对当前的activity从内存中删除或者终止它的进程,还有就是当系统内存不足的时候也会执行前者动作。

看电影

如果看完上面的还不能理解,那么你就可以理解为看电影,那部电影就是当前的activity. 

    1.电影正在播放的时候,称为运行状态

    2.当我们点击暂停按钮的时候,屏幕不是变暗了吗?或者出现一个小广告,这个就可以理解为被另一个全屏透明的东西遮住和非全屏的小广告,这个就是暂停状态了

    3.看港剧看多了,不想看了,就换部日本动作片来看,这时港剧不是看不到了吗?或者电脑直接黑屏了,反正看不到港剧,也就是当前的activity。这些都可以称为 停止状态

    4.就是不想看电影了,直接手动把播放器关掉,处于暂停或者停止状态,内存不足的时候系统会自动关掉播放器

还不明白话,先不用钻牛角尖,先往下看,往后会慢慢的明白的.........

Activity该谁来管?

activity是由栈来管理的,先进后出,后进先出。每一个用户能看到的activity都是处于栈顶的,当内存不足的时候,栈里面最底下的那个activity就会被回收,直接上图最明了

 它又是怎么个生老病死的呢?(生命周期)

  这个我就不多说了,直接开始.. 

  官方生命周期图,LP动了点手脚:

  

图看完了,紧接着是代码:

class="code_img_closed" src="/Upload/Images/2015010617/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('04dbb3a2-5c15-4f55-afbe-1f60fafa8734',event)" src="/Upload/Images/2015010617/2B1B950FA3DF188F.gif" alt="" />
 1 package com.leo.writeblog;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.util.Log;
 6 
 7 public class MainActivity extends Activity {
 8     private final String TAG = "MainActivity";
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13     }
14     @Override
15     protected void onStart() {
16         super.onStart();
17         Log.i(TAG, "onStart");
18     }
19     @Override
20     protected void onResume() {
21         super.onResume();
22         Log.i(TAG, "onResume");
23     }
24     @Override
25     protected void onRestart() {
26         super.onRestart();
27         Log.i(TAG, "onRestart");
28     }
29     @Override
30     protected void onPause() {
31         super.onPause();
32         Log.i(TAG, "onPause");
33     }
34     @Override
35     protected void onStop() {
36         super.onStop();
37         Log.i(TAG, "onStop");
38     }
39     @Override
40     protected void onDestroy() {
41         super.onDestroy();
42         Log.i(TAG, "onDestroy");
43     }
44 }
View Code

 首次运行的日志如下:

按返回键退出的时候日志如下:

按小房子键的时候日志如下:

从新返回应用程序的时候日志如下:

还有就是当activity还可见的时候,也就是弹出小窗口,或者透明的activity的时候,只会执行   onPause方法,当activity再次获得焦点后就执行onResume

onCreate:activity第一次运行的时候才调用,而且只调用一次

onRestart:activity不可见后恢复可见时调用

onStart:activity可见的时候调用

onStop:activity不可见的时候调用

onResume:activity获取焦点时调用

onPause:activitiy失去焦点时调用

onDestroy:activity销毁时调用

该如何去使用它?

我们在创建activity的时候必须继承Android自带的Activity,在使用时必须要在AndroidManifest.xml文件中注册,如下:

它们兄弟之间是怎么交流的呢?

是通过意图(Intent)进行通讯,数据传输,开启活动,至于什么是意图,在下一篇博文会详细的介绍,下次再见,LP也该下班了

 

上一篇: JD-GUI反编译后代码逻辑分析 下一篇: 没有下一篇了!
发表评论
用户名: 匿名