Android之(zhī)路 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

Android之(zhī)路

發表時(shí)間:2020-11-21

發布人(rén):融晨科技

浏覽次數:41

前言


  由于(yú)接近放假,公司在(zài)趕項目所以(yǐ)前段LP比較忙,沒什麽時(shí)間總結和(hé / huò)寫博客,隻是(shì)準備睡覺的(de)時(shí)候看看書,每天看的(de)不(bù)算多,大(dà)概10多頁左右吧,不(bù)過每天堅持如此的(de)話那也(yě)是(shì)一個(gè)龐大(dà)的(de)數字。
  今天LP的(de)任務完成了(le/liǎo),在(zài)領導還沒分配任務之(zhī)前再發布一篇關于(yú)Activity的(de)博文..........
  上(shàng)一篇跟大(dà)家分享了(le/liǎo)Android的(de)發展史、系統框架、還有Android的(de)四大(dà)組件,下面LP就(jiù)爲(wéi / wèi)大(dà)家介紹下四大(dà)組件之(zhī)一的(de)Activity。
  知道(dào)了(le/liǎo)Android的(de)曆史之(zhī)後,有沒有讓Android那種打不(bù)死的(de)精神打動了(le/liǎo),如果有的(de)話就(jiù)趕緊動身來(lái)學Android吧..
  行了(le/liǎo),廢話不(bù)多說(shuō) Let's go

目錄

  • 活動(Activity)
  • activity誰來(lái)管?
  • 它是(shì)怎麽個(gè)生老病死的(de)?
  • 啓動模式
  • 如何去使用它?
  • 兄弟間該如何進行交互?

Android四大(dà)組件之(zhī)一【Activity】


  說(shuō)到(dào)活動相信就(jiù)算沒有android基礎的(de)人(rén)都知道(dào)活動是(shì)個(gè)什麽東西,因爲(wéi / wèi)它會經常出(chū)現在(zài)我們的(de)身邊,但是(shì)說(shuō)到(dào)Activity,那就(jiù)不(bù)一定了(le/liǎo),不(bù)過懂一點英語的(de)人(rén)直接翻譯過來(lái)也(yě)知道(dào)是(shì)活動的(de)意思,其實Android的(de)活動和(hé / huò)現實生活中的(de)活動很相似,也(yě)可以(yǐ)理解爲(wéi / wèi)現實生活中的(de)活動,我們正式開始吧。
  說(shuō)到(dào)Android的(de)Activity,它到(dào)底是(shì)個(gè)什麽東西呢? 它就(jiù)是(shì)Android系統中的(de)一個(gè)組件,專門負責與用戶交互的(de),用戶看到(dào)的(de)每一個(gè)界面就(jiù)是(shì)一個(gè)活動。
  在(zài)Android中,Activity有基本的(de)四種狀态
    1.運行狀态  active/running
        處于(yú)屏幕的(de)最前端或者正在(zài)和(hé / huò)用戶交互着,稱爲(wéi / wèi)運行狀态/激活狀态
    2.暫停狀态  Paused
        當前activity失去焦點,被一個(gè)窗口或者非全屏的(de)東西遮住一點點和(hé / huò)被另一個(gè)透明的(de)activity覆蓋的(de)時(shí)候,稱爲(wéi / wèi)暫停狀态
    3.停止狀态  Stoped
        當前activity完全看不(bù)到(dào)了(le/liǎo),稱爲(wéi / wèi)停止狀态
    4.殺死狀态  Killed
        當activity處于(yú)“暫停狀态” Or “停止狀态”,這(zhè)時(shí)候系統就(jiù)可以(yǐ)對當前的(de)activity從内存中删除或者終止它的(de)進程,還有就(jiù)是(shì)當系統内存不(bù)足的(de)時(shí)候也(yě)會執行前者動作。

看電影


如果看完上(shàng)面的(de)還不(bù)能理解,那麽你就(jiù)可以(yǐ)理解爲(wéi / wèi)看電影,那部電影就(jiù)是(shì)當前的(de)activity.
    1.電影正在(zài)播放的(de)時(shí)候,稱爲(wéi / wèi)運行狀态
    2.當我們點擊暫停按鈕的(de)時(shí)候,屏幕不(bù)是(shì)變暗了(le/liǎo)嗎?或者出(chū)現一個(gè)小廣告,這(zhè)個(gè)就(jiù)可以(yǐ)理解爲(wéi / wèi)被另一個(gè)全屏透明的(de)東西遮住和(hé / huò)非全屏的(de)小廣告,這(zhè)個(gè)就(jiù)是(shì)暫停狀态了(le/liǎo)
    3.看港劇看多了(le/liǎo),不(bù)想看了(le/liǎo),就(jiù)換部日本動作片來(lái)看,這(zhè)時(shí)港劇不(bù)是(shì)看不(bù)到(dào)了(le/liǎo)嗎?或者電腦直接黑屏了(le/liǎo),反正看不(bù)到(dào)港劇,也(yě)就(jiù)是(shì)當前的(de)activity。這(zhè)些都可以(yǐ)稱爲(wéi / wèi) 停止狀态
    4.就(jiù)是(shì)不(bù)想看電影了(le/liǎo),直接手動把播放器關掉,處于(yú)暫停或者停止狀态,内存不(bù)足的(de)時(shí)候系統會自動關掉播放器
還不(bù)明白話,先不(bù)用鑽牛角尖,先往下看,往後會慢慢的(de)明白的(de).........

Activity該誰來(lái)管?


activity是(shì)由棧來(lái)管理的(de),先進後出(chū),後進先出(chū)。每一個(gè)用戶能看到(dào)的(de)activity都是(shì)處于(yú)棧頂的(de),當内存不(bù)足的(de)時(shí)候,棧裏面最底下的(de)那個(gè)activity就(jiù)會被回收,直接上(shàng)圖最明了(le/liǎo)
[img]http://images.cnitblog.com/blog/549384/201501/061610452652070.png

它又是(shì)怎麽個(gè)生老病死的(de)呢?(生命周期)


  這(zhè)個(gè)我就(jiù)不(bù)多說(shuō)了(le/liǎo),直接開始..
  官方生命周期圖,LP動了(le/liǎo)點手腳:
  [img]http://images.cnitblog.com/blog/549384/201501/061647315313944.png
圖看完了(le/liǎo),緊接着是(shì)代碼:
[img]http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif[img]http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif
 1 package com.leo.writeblog;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.util.Log;
 6 
 7 public class MainActivity extends Activity {
 8     private final String TAG = "MainActivity";
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13     }
14     @Override
15     protected void onStart() {
16         super.onStart();
17         Log.i(TAG, "onStart");
18     }
19     @Override
20     protected void onResume() {
21         super.onResume();
22         Log.i(TAG, "onResume");
23     }
24     @Override
25     protected void onRestart() {
26         super.onRestart();
27         Log.i(TAG, "onRestart");
28     }
29     @Override
30     protected void onPause() {
31         super.onPause();
32         Log.i(TAG, "onPause");
33     }
34     @Override
35     protected void onStop() {
36         super.onStop();
37         Log.i(TAG, "onStop");
38     }
39     @Override
40     protected void onDestroy() {
41         super.onDestroy();
42         Log.i(TAG, "onDestroy");
43     }
44 }

View Code
首次運行的(de)日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061703147503584.png
按返回鍵退出(chū)的(de)時(shí)候日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061704408127992.png
按小房子(zǐ)鍵的(de)時(shí)候日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061708174539972.png
從新返回應用程序的(de)時(shí)候日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061709321711846.png
還有就(jiù)是(shì)當activity還可見的(de)時(shí)候,也(yě)就(jiù)是(shì)彈出(chū)小窗口,或者透明的(de)activity的(de)時(shí)候,隻會執行 onPause方法,當activity再次獲得焦點後就(jiù)執行onResume
onCreate:activity第一次運行的(de)時(shí)候才調用,而(ér)且隻調用一次
onRestart:activity不(bù)可見後恢複可見時(shí)調用
onStart:activity可見的(de)時(shí)候調用
onStop:activity不(bù)可見的(de)時(shí)候調用
onResume:activity獲取焦點時(shí)調用
onPause:activitiy失去焦點時(shí)調用
onDestroy:activity銷毀時(shí)調用

啓動模式


說(shuō)到(dào)啓動模式,它一共有四種,分别是(shì)standard、singleTop、singleTask、singleInstance,可以(yǐ)在(zài)AndroidManifest.xml文件中通過<activity>标簽中的(de)android:launchMode屬性來(lái)選擇啓動模式。
standard:
    這(zhè)種模式是(shì)标準啓動模式,也(yě)是(shì)默認的(de)啓動模式,在(zài)不(bù)進行顯式指定的(de)情況下,所有活動都會自動使用這(zhè)種模式
singleTop
    當啓動模式爲(wéi / wèi)singleTop時(shí),在(zài)啓動活動的(de)時(shí)候如果發現返回棧的(de)站定已經是(shì)該活動,那麽就(jiù)直接使用,不(bù)必再創建
singleTask
    當啓動模式爲(wéi / wèi)singleTask的(de)時(shí)候,每次啓動活動都會在(zài)返回棧中檢查是(shì)否存在(zài)該活動,如果存在(zài),并發活動之(zhī)上(shàng)的(de)活動統統出(chū)棧,否則就(jiù)創建一個(gè)
singleInstance
    啓動模式 爲(wéi / wèi)singleInstance,這(zhè)時(shí)會單獨創建一個(gè)返回棧來(lái)管理這(zhè)個(gè)活動,這(zhè)樣可以(yǐ)達到(dào)程序與程序之(zhī)間共享活動

該如何去使用它?


我們在(zài)創建activity的(de)時(shí)候必須繼承Android自帶的(de)Activity,在(zài)使用時(shí)必須要(yào / yāo)在(zài)AndroidManifest.xml文件中注冊,如下:
[img]http://images.cnitblog.com/blog/549384/201501/061720281255915.png

它們兄弟之(zhī)間是(shì)怎麽交流的(de)呢?


是(shì)通過意圖(Intent)進行通訊,數據傳輸,開啓活動
什麽是(shì)意圖呢?
其實它就(jiù)像我們生活中的(de)快遞員,負責幫我們送東西,Android系統裏的(de)意圖就(jiù)是(shì)上(shàng)演着這(zhè)個(gè)角色...
它可以(yǐ)與不(bù)同程序的(de)活動交流,也(yě)可以(yǐ)啓動不(bù)在(zài)同一個(gè)程序中的(de)活動......等等一些,這(zhè)裏我就(jiù)不(bù)做多介紹了(le/liǎo),需要(yào / yāo)往下了(le/liǎo)解的(de)可以(yǐ)到(dào)網上(shàng)查下資料
其他(tā)精彩文章文章

jQuery教程(10)-DOM樹操作之(zhī)内容setter和(hé / huò)getter方法

android學習筆記(37)使用 DatePickerDialog、TimePickerDialog


android學習筆記(36)使用AlertDialog創建自定義對話框


jQuery教程(1)-操作DOM之(zhī)操作屬性

Spring mvc新手入門(11)-返回json 字符串的(de)其他(tā)方式


更多關于(yú)android開發文章


相關案例查看更多