Activity

首先,Activity是Android系统中的四大组件之一,可以用于显示View。Activity是一个与用记交互的系统模块,几乎所有的Activity都是和用户进行交互的,但是如果这样就能说Activity主要是用来显示View就不太正确了。

在深入了解Activity之前,我们先要知道一下MVC设计模式,在JAVAEE 中MVC设计模式已经很经典了,而且分的也比较清晰了,但是在Android中,好多人对MVC在Android开发中的应用不是很清楚,下面我就先来介绍一下MVC在Android开发中的应用:

M(Model 模型):Model是应用程序的主体部分,所有的业务逻辑都应该写在这里,在Android中Model层与JavaEE中的变化不大,如:对数据库的操作,对网络等的操作都放在该层(但不是说它们都放在同一个包中,可以分开放,但它们统称为Model层)。

V(View 视图):是应用程序中负责生成用户界面的部分,也是在整个MVC架构中用户唯一可以看到的一层,接收用户输入,显示处理结果;在Android应用中一般采用XML文件里德界面的描述,使用的时候可以非常方便的引入,当然也可以使用JavaScript+Html等方式作为View。

C(Controller控制层)android的控制层的重任就要落在众多的activity的肩上了,所以在这里就要建议大家不要在activity中写太多的代码,尽量能过activity交割Model业务逻辑层处理。

好了,在介绍过Android应用开发中的MVC架构后,我们就可以很明确的知道,在Android中Activity主要是用来做控制的,它可以选择要显示的View,也可以从View中获取数据然后把数据传给Model层进行处理,最后再来显示出处理结果。

介绍过Activity的主要作用后,那么我们就要详细说一下Activity了。

Activity生命周期图

Activity 的生命周期是被以下的函数控制的。

public class Activity extends ApplicationContext {

protected void onCreate(Bundle icicle);

protected void onStart();

protected void onRestart();

protected void onResume();

protected void onFreeze(Bundle outIcicle);

protected void onPause();

protected void onStop();

protected void onDestroy();

}

onCreate(Bundle) 函数是你进行初始化的地方,这个也是执行

setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML

编制的UI界面,可以使UI和具体实现完全分离。

onPause()函数是处理用户离开当前 Activity 的地方。更重要的是,任何在当前

Activity中的任何改变都要在这个函数中提交。

Activity有四种状态:

活动状态,当Activity处于Stack(栈)顶时,就是手机当前的现实屏幕,这是 Activity就

处于activity或者运行状态。

运行但是失去焦点,当Activity还处于运行状态时,但是屏幕是有另外一个Activity

处于文档处于焦点状态,当前的Activity就处于pause。

停止,当Activity被另一个Activity完全覆盖的时候,就被停止了,其实就是虽然在

运行,但是用户却看不见。

结束,当Activity处于pause或者stop时,系统可以结束 Activity,回收资源,这

是Activity就是处于结束状态了。

处于结束状态的是Activity,如果要使用户可见,只要重启才可以。

Activity的响应时间

当前Activity所在的线程为主线程,它的响应时间为5秒,如果在当前运行的Activity中进行耗时的操作且响应时间起过5秒,那么程序就会报ANR错误。所以,这也是不建议在Activity中写太多复杂代码的原因之一。

当然,有些代码只能写在Activity中,不然就运行不了(它们不是生命周期方法),比如你想要获得android系统或者硬件一的些信息,就必须在Activity中写出来,如果单独写一个工具类获得不了。

1.Activity的主要作用

Activity是Android一个非常重要的用户接口,是可见的,用户和应用程序之间进行交互的接口。在每个Activity中都可以放很多控件,所以也可以把Activity看作控件的容器。

2.创建Activity的要点

1)一个Activity就是一个类,并且这个类要继承Activity,而这个被继承的Activity来源于android.jar包

2)需要复写onCreate方法,当一个Activity第一次运行时Android操作系统就会调用onCreate方法

3)因为Activity是应用程序的组件,所以每一个Activity都必须在AndroidManifest.xml里面注册,manifest相当于应用程序清单。

4) 为Activity添加必要的控件

3.在AndroidManifest.xml文件中注册应用Activity的方法

1) 注册Activity的时候name的时候前面加点,因为和包名合起来就刚好是这个类(或者说Activity)的路径。

2) label,就是在页面上方白色的部分显示的文字

3)intent-filter,暂时不用管,意思就是你在哪个activity配置这个东西,哪个activity就在应用打开的时候第一个运行

4.在Activity中添加控件,就是在layout文件夹中创建布局文件(严格意义上来说并不是每一个Activity都要创建一个相应的xml布局文件,比如:TextView textview = new TextView(this);

//以前我一直以为每创建一个Activity必须相应地也要创建一个layout文件,现在发现不是这样,也可以按照这个方法,创建一个简单的TextView,把Context设置为this,设置一个文本值,然后再将这个TextView设置为ContentView.这种个人觉得更加方便测试吧。

textview.setText("This is the Artists tab");

setContentView(textview);

}

}

这样的方法同样工作,但是总的来说还是建议为每一个Activity定义一个布局文件。

1) 程序中的setContentView就是设置这个Activity所使用的布局文件。

比如:setContentView(R.layout.my_text); //说到这里,注意一个问题,布局文件的名称不允许有大写

2) 在xml文件中设置的控件id会在R.java中生成id

3)在应用程序中使用findViewById来取得布局文件中的控件(前提是布局文件中的控件必须设置相应的id),因为它的返回类型为View,所以要强制类型转换为控件类型

举个例子就是 Button button =(Button)findViewById(R.id.button);

————————————————

版权声明:本文为CSDN博主「lidandan2016」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/lidandan2016/article/details/78030688

java activity_java中的Activity相关推荐

  1. 在kotlin中启动activity发生java.lang.RuntimeException: Unable to instantiate activity ComponentInfo for Kot

    在kotlin中启动activity发生java.lang.RuntimeException: Unable to instantiate activity ComponentInfo for Kot ...

  2. 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 在 PathClassLoader 和 BootClassLoader 之间插入 DexClassLoader )

    文章目录 前言 一.在 PathClassLoader 和 BootClassLoader 之间插入 DexClassLoader 1.创建 DexClassLoader 2.使用 DexClassL ...

  3. 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )

    文章目录 一.使用 DexClassLoader 获取组件类失败报错 二.失败原因分析 一.使用 DexClassLoader 获取组件类失败报错 在上一篇博客 [Android 逆向]启动 DEX ...

  4. android java服务,Android进阶学习必会:Java Binder中的系统服务

    前言 这个知识点是Android进阶学习必须掌握的知识点之一,也是高阶Android架构师经常问到的点.在这里分想给大家,希望对大家的工作和学习有所帮助.喜欢本文的记得点赞关注哦~ 在前面的Andro ...

  5. 如何在android的XML和java代码中引用字符串常量

    使用字符串(string)资源        在一个Android工程中,我们可能会使用到大量的字符串作为提示信息.这些字符串都可以作为字符串资源声明在配置文件中,从而实现程序的可配置性. 在代码中我 ...

  6. 如何阻止EditText专注于Android中的Activity启动

    我在Android中有一个Activity ,其中包含两个元素: EditText ListView 当我的Activity开始时, EditText立即具有输入焦点(光标闪烁). 我不希望任何控件在 ...

  7. Android中的Activity

    说明: 本文是郭霖<第一行代码-第3版>的读书笔记 Activity是包含用户界面的组件,主要用于和用户交互,一个应用程序中可以包含一个或多个Activity 3.2 基本用法 创建一个E ...

  8. android编程root启动指定app,取之有道——巧用Root权限 启动其他APP中的Activity

    取之有道--巧用Root权限 启动其他APP中的Activity 2019年01月29日 | 萬仟网移动技术 | 我要评论 这次博主来分享一个很巧妙的办法来启动其他APP中Activity的方法. 首 ...

  9. Java项目中使用频率最高的100个类

    Java软件开发的很大一部分都使用来自各种库的API.我从10,000个开源Java项目中提取了API类的频率.这些类来自Java标准库或第三方库.每个类别对每个项目计一次.以下列表显示了前100名. ...

  10. 带你全面了解高级 Java 面试中需要掌握的 JVM 知识点

    对于一名高级 Java 工程师来说,JVM 可以说是面试必问的一个知识点,而大多数人可能没有对 JVM 的实际开发和使用经验,接下来这一系列文章将带你深入了解 JVM 需要掌握的各个知识点.这也将帮助 ...

最新文章

  1. 图像分类:CVPR2020论文解读
  2. android xml转换成svg,如何将Android xml布局转换为png / svg以在iOS版本中使用
  3. 计算机接口实验1,计算机接口技术实验一.doc
  4. 今天我要批判技术管理者
  5. 高精度加法(简明版C语言),高精度加法(简明版C语言)
  6. 区分错误类型_PETCT能区分癌症和炎症吗?
  7. IOS开发一些资源收集
  8. 新场景 + 新应用,Flink 在机器学习领域的生产落地
  9. 博文视点 疯狂ios讲义之选择器(UIPickerView)
  10. 架构设计师(Architect)的专业与角色
  11. 修复IPSEC Services服务无法启动的问题
  12. 程序员工作交接文档怎么写_你认为程序员需不需要写文档?需要写哪些文档?...
  13. android h5图片预览,移动端h5实现拍照上传图片并预览
  14. tweak环境安装及编写
  15. SSL证书错误了怎么办?
  16. 2家上市,4家排队,游戏公司今年为何偏爱港股?
  17. 支付宝转账到个人账户
  18. 对于人生道路的些许感慨
  19. su和su-以及sudo的理解
  20. vim删除文本的命令

热门文章

  1. 银行对公业务数字化迎来新机遇
  2. 泊松分布以及相关分布的知识整理
  3. 安装的photoshop cs2为什么一进去就说我的用户名、组织、或序列号无效或错误???
  4. 中国电信计算机类校园招聘笔试题目,中国电信集团2019校园招聘笔试真题(计算机技术类-A卷)(精选).doc...
  5. 如何实现网页中按钮的自动点击?
  6. Google SketchUp SKP文件转OBJ 专业版注册机
  7. pycocotools安装,简单易懂
  8. 高等数学:第三章 微分中值定理与导数的应用(3)泰勒公式
  9. 通达信最新 行情服务器,通达信数据接收服务器地址及端口号
  10. 【电商运营】试试这5种个性化营销方法,告别无效营销!