zoukankan      html  css  js  c++  java
  • Android基础之Activity

    一、什么是Activity

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

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

    二、如何去创建Activity

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

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

      2.需要在功能清单AndroidManifest.xml文件中配置新建的Activity类

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     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     <application
    12         android:allowBackup="true"
    13         android:icon="@drawable/ic_launcher"
    14         android:label="@string/app_name"
    15         android:theme="@style/AppTheme" >
    16         <activity
    17             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.xml -->
     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处于激活状态,可以和用户进行交互。

  • 相关阅读:
    电路维修 (广搜变形-双端队列bfs)
    靶形数独 (dfs+预处理+状态压缩)
    埃及分数问题(带乐观估计函数的迭代加深搜索算法-IDA*)
    weight (搜索对象的选取)
    Codeforces Round #506 (Div. 3)
    生日蛋糕 (poj1190) (dfs剪枝)
    校内模拟赛题面
    NOIP2013 D1T3 货车运输 zz耻辱记
    NOIP2011 D2T3 观光公交 做题笔记
    ARC 103
  • 原文地址:https://www.cnblogs.com/xkl520xka/p/5089391.html
Copyright © 2011-2022 走看看