Android四大组件之Activity(一)
2012-09-18 22:18
507 查看
写在最前, 从大四下学期(去年)开始接触android,来到北京开始实习,再会学校完成毕业设计,又再次返回公司,正式入职,做android应用开发。这期间断断算起来已经差不多一年了。其实很早就想写博客了,因为写博客是一个提升自我技术水平的很有效方法,同时还可以锻炼自己的文笔,和别人分享自己的所学所想,偶尔得到一两句夸奖,便可以高兴很长时间,呵呵,这便是做技术人的单纯的快乐。 这次是下了很大的决心,希望能够将自己这近一年所学到的知识,进行一次系统的复习和提高,同时分享出来。虽然现在网上关于android的技术文章多如牛毛,但我还是会努力写一套有自己风格的android blog。好了,闲话就这么多,下面开始了,哈哈。
Activity, 是指一类用来呈现交互界面的android应用程序组件。例如,我们通过手机打电话,发短信或者拍照,此时与我们的手指发生交互的界面,实际上就是一个个Activity。每一个Activity系统都会给予一个Windows(窗口),用来绘制用户交互界面,这个窗口将填充到手机屏幕上。
一个应用程序一般会包括多个Ativity。通常,某个Activity会被设置为该应用程序的“main”(主)Activity,该Activity将作为该应用程序的入口并被用户首次看到。Activity之间是可以相互触发的,以便来执行不同的动作(用户操作)。
Activity的创建, Activity是Android四大组件之一,该类的定义在android源码的: android/app/ 下。创建自己的Activity需要继承系统的Activity,同时覆写相关方法。Activity有七个也其生命周期有关的方法,这七个方法掌握和控制着Activity的创建与销毁。下面是一个最简单的Activity:
[/code]
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
onCreate()会在Activity被创建时调用,除此之外还有,onStart() , onResume(), onPause(), onStop(), onRestart(),onDestory() ,下面是Activity的生命周期图示:
Activity, 是指一类用来呈现交互界面的android应用程序组件。例如,我们通过手机打电话,发短信或者拍照,此时与我们的手指发生交互的界面,实际上就是一个个Activity。每一个Activity系统都会给予一个Windows(窗口),用来绘制用户交互界面,这个窗口将填充到手机屏幕上。
一个应用程序一般会包括多个Ativity。通常,某个Activity会被设置为该应用程序的“main”(主)Activity,该Activity将作为该应用程序的入口并被用户首次看到。Activity之间是可以相互触发的,以便来执行不同的动作(用户操作)。
Activity的创建, Activity是Android四大组件之一,该类的定义在android源码的: android/app/ 下。创建自己的Activity需要继承系统的Activity,同时覆写相关方法。Activity有七个也其生命周期有关的方法,这七个方法掌握和控制着Activity的创建与销毁。下面是一个最简单的Activity:
public class MainActivity extends Activity {
[code]/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
[/code]
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
onCreate()会在Activity被创建时调用,除此之外还有,onStart() , onResume(), onPause(), onStop(), onRestart(),onDestory() ,下面是Activity的生命周期图示:
上图中涉及到了另一个知识点,即Android进程优先级。
Android系统会尽可能长的将应用程序的进程保存在内存中(进程缓存),但最终需要移除旧的进程为新的或更重要的进程提供内存资源。Android系统为每个进程计算优先级,以决定哪些进程被保留或被杀死。下面是Android系统进程优先级(优先级由高到低排列):
1、Foreground Process :位于前台,和用户之间交互
2、Visible Process :可见的,即没有被 [b]Foreground Process 完全遮住。[/b]
3、Services Process :服务进程,如下载服务,或是访问网络等耗时的进程,Android给予较高的优先级
4、Background Process :运行于后台
5、Empty Process :没有界面或者说没有view的Activty
EmptyActivity的定义:
public class EmptyActivity extends Activity {
[code]
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
}
[/code]
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
下面通过一个简单的例子,直观的看一下Activity的生命周期。
package com.zhai.demo;
[code]
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
//用来跟踪Activity的执行过程
private int mCount = 0 ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mCount++ ;
Log.d("activity_state", "onCreate(),mCount=" + mCount) ;
// The activity is being created.
}
@Override
protected void onDestroy() {
super.onDestroy();
mCount-- ;
Log.d("activity_state", "onDestroy(),mCount=" + mCount) ;
// The activity is about to be destroyed.
}
@Override
protected void onPause() {
mCount-- ;
Log.d("activity_state", "onPause(),mCount=" + mCount) ;
super.onPause();
// Another activity is taking focus (this activity is about to be "paused").
}
@Override
protected void onRestart() {
mCount++ ;
Log.d("activity_state", "onRestart(),mCount=" + mCount) ;
super.onRestart();
}
@Override
protected void onResume() {
mCount++ ;
Log.d("activity_state", "onResume(),mCount=" + mCount) ;
super.onResume();
// The activity has become visible (it is now "resumed").
}
@Override
protected void onStart() {
mCount++ ;
Log.d("activity_state", "onStart(),mCount=" + mCount) ;
super.onStart();
// The activity is about to become visible.
}
@Override
protected void onStop() {
mCount-- ;
Log.d("activity_state", "onStop(),mCount=" + mCount) ;
super.onStop();
// The activity is no longer visible (it is now "stopped")
}
}
[/code]
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
这个例子中通过打log的方式,来呈现相应场景下Acvtivity的状态,并引入了一个int型的计数器 mCount,来更加直观的显示各个函数的作用也他们之间的关系。
1. 启动应用程序:
相应的log信息为:可以清楚的看到,首次启动Activity时,依次调用onCreate(),onStart(),onResume(),
2.现在我们安返回键,看看会发生什么?
手机返回到了系统桌面,同时可以看到,依次执行了 onPause(),onStop(),onDestory(), 此时该应用程序退出,Activity已经被销毁。
3. 我们再次进入程序,并按“home”键,看看会发生什么?
创建的过程已然相同,但按“home”键时,程序并没有退出,而是由“foreground”转到“backgroud”。接下来我再次进入应用程序,看看该应用如何有被重新转到前台。
图中红线标记的,正是再次进入程序时,所发生的事情,应用程序依次调用了 onRestart(),onStart(),onResume().
以上的测试,我之前Activity的生命周期图,完全吻合。同时可以看出:[onCreate,onDestory], [onStart(),onStop],[onResume,onPause]也是一一对应的。
好了,就写到这吧,下篇会和大家分享一下Android用来管理Activity的方式——Task。
相关文章推荐
- android 四大组件之 Activity
- Android四大组件之Activity详解
- Android基础知识之四大组件Activity(三)多个Activity交互的生命周期与设计思想
- android四大组件之Activity以及常见的view处理
- Android的四大组件之-Activity的状态和生命周期
- Android的四大组件——Activity
- Android四大组件之Activity
- Android四大组件:Activity、Service、BroadCast Recevicer、Content provider
- 2.Android四大组件之一Activity
- 关于Android中的四大组件(Activity)
- Android四大组件之---activity生命周期详解
- android静态安全检测_四大组件activity
- Android之四大组件之一-Activity(一)
- Android四大组件之Activity (IntentFilter匹配规则)
- Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。
- Android四大组件之Activity
- Android四大组件之Activity
- Android源码解析四大组件系列(二)---Activity启动过程的总体把握
- Android笔记---四大组件之Activity活动详解
- Android 四大组件之Activity