• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 安卓學習筆記之Activity(一)

    **

    安卓四大組件之Activity

    **

    1.介紹

    **

    Activity的出現無處不在,從手機開始啟動的第一個頁面的都是Activity。主要用于可見的狀態與用戶進行交互。好比一張紙,我們需要用代碼這只“筆”來描繪一些信息告訴讀者,這張紙里面有些什么內容和需要操作什么東西。總的來說就是能看到的基本上和Activity。如果有什么錯誤的地方,希望大家指出。感激不盡。
    既然作為操作系統的組件,那么每個組件都會有獨立的生命周期。


    **

    2. 生命周期

    **
    在Android的官方文檔我們能夠看到這樣的一張圖片:
    這里寫圖片描述

    簡單看做是,系統會調用如下幾個方法。
    OnCreate()–>OnStart()–>OnResume()–>OnPause()–>OnStop()–>OnDestroy()

    Activity擁有四種基本狀態
    1*.Active/Running*
    一個Activity啟動入棧(裝載Activity的容器),有先進先出的特點。它會顯示屏幕的最前端(Activity棧頂)此時它是處于和用戶交互的**狀態,叫做活動狀態或者運行狀態
    2. Paused
    暫停狀態,被一個新的非全屏的Activity或者一個透明的Activity被放到棧頂,比如你用手機瀏覽網頁的時候,突然來了一個電話,那么這個activity就是處于paused的狀態,但是它依然是保持活力的。
    3. Stopped
    停止狀態,如果一個activity完全為另一個Activity完全覆蓋,它不可見,所以它的窗口被隱藏,當系統內存吃緊的時候,停止狀態的Activity會被強行終止掉
    4. Killed
    殺死狀態,顧名思義,被系統回收,意味著系統內存吃緊的時候,或者你不需要用這個Activity的時候,系統會直接終止它的進程。

    好了。那么系統是如何運作Activity的呢 ?
    那就是上面我們說的幾個方法了。
    當我們首次使用ADT/Android studio創建安卓工程的時候,我們創建一個工程的時候都會默認創建一個OnCreate方法并調用它。onCreate

    我們點擊運行的時候,那么就會彈出Hello world。
    這里寫圖片描述

    那我們添加剩余的方法.

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        protected void onStart() {
            Log.i("dd","onStart");
            super.onStart();
        }
    
        @Override
        protected void onPause() {
            Log.i("dd","onPause");
            super.onPause();
        }
    
        @Override
        protected void onResume() {
            Log.i("dd","onResume");
            super.onResume();
        }
    
        @Override
        protected void onStop() {
            Log.i("dd","onStop");
            super.onStop();
        }
    
        @Override
        protected void onDestroy() {
            Log.i("dd","onDestroy");
            super.onDestroy();
        }
    }

    這里寫圖片描述

    當我按下返回這個按鈕的時候,退出到主界面。

    這里寫圖片描述

    但是當我按下,Home這個按鈕的時候,
    這里寫圖片描述

    這次并沒有銷毀,而是在后臺運行著。運行onPause和onStop這兩個方法,
    當我點回去的時候發現,
    這里寫圖片描述

    繼續運行onStart()和onResume()方法。最后不用的時候會自動銷毀,運行onDestroy()


    3.如何啟動一個Activity?

    要啟動一個Activity用到的就是Intent這個類,我們先創建一個MyActivity類并在Manifest文件里注冊

    public class MyActivity extends Activity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    }

    然后通過Intent 創建一個對象,在Intent構造方法中分別傳入,Context,還有對應想跳轉另一個的Activity的類就行了。最后調用startActivity()將Intent的對象傳進去就行了。

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Intent intent=new Intent(this,MyActivity.class);
            startActivity(intent);
    
        }
    版權聲明:本文為qq_29157591原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_29157591/article/details/73224687

    智能推薦

    安卓ApiDemos學習 app/Activity/Wallpaper

    本例啟動一個activity,但是背景是系統的桌面 activity顯示本身沒有特別的地方,關鍵在AndroidManifest.xml文件中 android:theme="@style/Theme.Wallpaper"  設置使用了系統桌面作為activity背景圖片 效果如下...

    安卓ApiDemos學習 app/Activity/SetWallpaper

    墻紙設置的例子,還涉及一些圖片變換的內容 取得當前墻紙 將墻紙設置到imageview上 因為要對圖片進行一些處理,所以打開了catch imageView.setDrawingCacheEnabled(true) 點擊Randomize按鈕時,會隨機生成一個數字,然后從預定義的數據中取出顏色 然后將顏色覆蓋在圖片上,只允許某些顏色通過。 mColors是一個數據,預先定義了一些顏色 用戶點擊 S...

    安卓學習筆記

    學習安卓的學習筆記,留存一下,雖然以后可能都不會從事安卓相關的工作了,紀念一下。 1 Activity 1 返回棧 活動可以層疊,啟動一個新的活動會覆蓋在原活動上,Back會銷毀最上面的活動,下面的一個活動就會重新顯示。 用任務管理一系列活動。任務用返回棧描述。 啟動一個新的活動,這個活動就在返回棧中入棧,finish()即棧頂元素出棧,系統總是會顯示處于棧頂的活動給用戶。(所以finish()銷...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡