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主要是用来做控制的,它可以选择要显示的Vi ew ,也可以从View中获取数据然后把数据传给Model层进行处理 ,最后再来显示出处理结果。
介绍过Activity的主要作用后,那么我们就要详细说一下A ctivity了。
Activity生命周期图
Activity 的生命周期是被以下的函数控制的。
public class Activity extends ApplicationContex t {
protected void onCreate(Bun dle i cicle);
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)函数的地方 ,setContentV iew(View)函数可以传入一个由XML
编制的 UI界面 ,可以使UI和 具体实现完全分离。
onPause()函数是处理用户 离开 当前 Activity 的 地方。更重要的是,任何在当前
Activity中的任何改变都要在这个函数中提交。
Activity有四种状态 :
活动状态,当Activity处于Stack (栈)顶时,就是手机当前的现实屏幕 ,这是 Activity就
处于activity或者运 行状 态。
运行但是失去焦点 ,当Activity还处于运行状 态时,但是屏幕是有另外一个Act ivity
处于文档处于焦 点状态,当前的Activity就处 于pause。
停止,当Activity被另一个Activity完 全覆盖的时候,就被停 止了,其实就是虽然 在
运行,但是用户却看不见。
结束,当Activity处于pause或者stop时,系统可以结束 Activ ity,回收资 源,这
是Activity就是处于结 束状态了。
处于结束状态的是Act ivity,如果要使用户可 见,只要重启才 可以。
Activity的 响应时间
当前Activity所在的线程为主线程,它的 响应时间 为5秒, 如果在当前运行的Activity中进行耗时的操作且 响应时间 起过5秒,那么程序就会 报ANR错误。所以,这也是不建议在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主要是用来做控制的,它可以选择要显示的Vi ew ,也可以从View中获取数据然后把数据传给Model层进行处理 ,最后再来显示出处理结果。
介绍过Activity的主要作用后,那么我们就要详细说一下A ctivity了。
Activity生命周期图
Activity 的生命周期是被以下的函数控制的。
public class Activity extends ApplicationContex t {
protected void onCreate(Bun dle i cicle);
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)函数的地方 ,setContentV iew(View)函数可以传入一个由XML
编制的 UI界面 ,可以使UI和 具体实现完全分离。
onPause()函数是处理用户 离开 当前 Activity 的 地方。更重要的是,任何在当前
Activity中的任何改变都要在这个函数中提交。
Activity有四种状态 :
活动状态,当Activity处于Stack (栈)顶时,就是手机当前的现实屏幕 ,这是 Activity就
处于activity或者运 行状 态。
运行但是失去焦点 ,当Activity还处于运行状 态时,但是屏幕是有另外一个Act ivity
处于文档处于焦 点状态,当前的Activity就处 于pause。
停止,当Activity被另一个Activity完 全覆盖的时候,就被停 止了,其实就是虽然 在
运行,但是用户却看不见。
结束,当Activity处于pause或者stop时,系统可以结束 Activ ity,回收资 源,这
是Activity就是处于结 束状态了。
处于结束状态的是Act ivity,如果要使用户可 见,只要重启才 可以。
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);