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