你的位置:首页 > 操作系统

[操作系统]Android基础之Activity


一、什么是Activity

  Activity是Android四大组件之一,并且Activity是组件中的重中之重。

  Activity是为用户提供一个用于信息交互的窗口。

二、如何去创建Activity

  1.新建一个继承Activity的子类

1 public class MainActivity extends Activity {2 3   @Override4   protected void onCreate(Bundle savedInstanceState) {5     super.onCreate(savedInstanceState);6     setContentView(R.layout.activity_main);//加载布局7   }8 }

  2.需要在功能清单AndroidManifest.

 1 <? 2 <manifest  3   package="com.example.newactivity" 4   android:versionCode="1" 5   android:versionName="1.0" > 6  7   <uses-sdk 8     android:minSdkVersion="8" 9     android:targetSdkVersion="17" />10 11   <application12     android:allowBackup="true"13     android:icon="@drawable/ic_launcher"14     android:label="@string/app_name"15     android:theme="@style/AppTheme" >16     <activity17       android:name="com.example.newactivity.MainActivity"18       android:label="@string/app_name" >19       <intent-filter>20         <action android:name="android.intent.action.MAIN" />21 22         <category android:name="android.intent.category.LAUNCHER" />23       </intent-filter>24     </activity>25   </application>26 27 </manifest>

三、任务栈

  任务栈的由来:

    Android应用程序有一个或多个Activity组件或其它组件组成,为了记录用户都开启哪些Activity,以及开启这些Activity的先后顺序。

  任务栈的特点:

    1、当一个Android应用程序开启后Android操作系统就会为它分配一个任务栈,当所有的activity都退出的时候,任务栈就被清空了;

    2、任务栈的id是一个自增长的int数据类型,可以通过getTaskId()方法获取任务栈的id;

    3、Android操作系统里存在多个任务栈,一个Android应用程序可以有一个或多个任务栈;

    4、默认情况下,关闭掉一个应用程序就清空了Android操作系统为该应用程序分配的任务栈,但应用程序的进程还会保留;

四、Activity的启动模式

  Activity的启动模式总共有四种模式,分别是standard(默认)、singleTop、singleTask、singleInstance

  1.standard模式

  在这种启动的模式下,每次激活Activity时(startActivity)都创建一个新的Activity实例并放入任务栈的栈顶

  2.singleTop

  在这种启动的模式下,如果singleTop在任务栈的栈顶时,不需要在创建新的Activity,调用onNewIntent()方法(第一次启用singleTop不会调用onNewIntent()方法),

  否则要重新创建Activity实例,但不会调用onNewIntent();

  3.singleTask(常用)

  在这种启动模式下,如果singleTask在任务栈的栈顶时,不需要创建新的Activity,调用onNewIntent()方法;

  如果singleTask不在任务栈的栈顶,并且在任务栈中有singleTask时,也不需要重新创建新的Activity,而是调用onNewIntent()方法,并且在singleTask之上其它的Activity实例都将删除

  4.singleInstance

  在这种启动模式下,如果该Activity所在的Android程序激活过或被激活过它,会存在于单独的任务栈中

  如果其它的Android程序启动的时候,会重新激活该Activity,并且会调用该Activity中的onNewIntent()方法;

  另外一个app打开该Activity程序演示

  

 1 public class App02Activity extends Activity { 2  3   @Override 4   protected void onCreate(Bundle savedInstanceState) { 5     super.onCreate(savedInstanceState); 6     setContentView(R.layout.activity_app02); 7     ((Button) findViewById(R.id.access_bt)).setOnClickListener(new OnClickListener() { 8       @Override 9       public void onClick(View v) {10         Intent intent = new Intent("com.shxt.activity.singleinstance");11         startActivity(intent);12       }13     });14   }15 }

 

 1     <!-- 该Activity中的AndroidManifest. 2     <activity 3       android:name=".SingleInstanceActivity" 4       android:launchMode="singleInstance" > 5       <intent-filter> 6         <action android:name="com.shxt.activity.singleinstance" /> 7  8         <category android:name="android.intent.category.DEFAULT" /> 9       </intent-filter>10     </activity>

 

五、Activity生命周期

 一个Activity的完整生命周期:

void onCreate()

void onStart()

void onResume()

void onPause()

void onStop()

void onDestroy()

1.一个完整的生命周期,是由第一次调用onCreate()开始,直至调用onDestory()方法结束。

 Activity在onCreate()完成初始化,在onDestroy()中释放所有的系统资源。

2.可视生命周期:该生命周期是由onStart()调用开始直到调用onStop()方法结束。在这之间,方法可以随着应用程序是否为用户可见而被多次调用

3.前台生命周期:是由onReusme()调用到onPause()方法为止。在此之间Activity处于激活状态,可以和用户进行交互。