• java中的Activity


    来源:https://blog.csdn.net/lidandan2016/article/details/78030688

    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

  • 相关阅读:
    Shiro框架:Failed to deserialize java.lang.Exception: Failed to deserialize问题解决
    Linux系统:CentOS防火墙的各种命令使用
    Linux系统:CentOS下vsftpd的安装配置
    Vue项目启动报错:UnhandledPromiseRejectionWarning: TypeError: loaderContext.getResolve is not a function问题解决
    Minio存储桶:部署存储服务以及设置永久下载链接
    Redis之Bitmaps
    Redis事务与Lua
    Redis Pipeline
    Redis Shell详解
    Redis慢查询
  • 原文地址:https://www.cnblogs.com/LiTZen/p/11889470.html
Copyright © 2020-2023  润新知