詳解Android中的四大組件之一:Activity詳解

来源:https://www.cnblogs.com/dashucoding/archive/2018/08/07/9434499.html
-Advertisement-
Play Games

activity的生命周期 activity的四種狀態 running: 正在運行,處於活動狀態,用戶可以點擊屏幕,是將 處於棧頂的狀態。 paused: 暫停,處於失去焦點的時候,處於 ,可能是被如彈框一樣遮蓋,被通明的 的放置到棧頂, 一起狀態都存在。 stopped: 處於 狀態,是當前的 被 ...


標題圖

Activity詳解.png

activity的生命周期

Activity的生命周期.png

activity的四種狀態

Activity的四種狀態.png

running:正在運行,處於活動狀態,用戶可以點擊屏幕,是將activity處於棧頂的狀態。

paused:暫停,處於失去焦點的時候,處於paused,可能是被如彈框一樣遮蓋,被通明的activity的放置到棧頂,paused一起狀態都存在。

stopped:處於stopped狀態,是當前的activity被遮蓋,是完全遮擋的那種,覆蓋屏幕,一起的狀態信息還是存在的。

killed:activity被銷毀,回收,一切的狀態信息不存在了。

activity的生命周期

activity的生命周期

activity啟動 ->被創建時調用onCreate()->被啟動,處於用戶可見狀態,但不能與用戶交互onStart()->可與用戶交互了onResume()

點擊Home 整個activity處於停止狀態,可見,不能與用戶交互onPause()->整個activity被停止,被完全覆蓋,onStop()

回到activity 處於由不可見狀態到可見的狀態onRestart()->onStart()-onResume()

退出activity onPause()->onStop()->當前activity被銷毀,回收,資源釋放onDestroy()

Android進程優先順序

Android進程優先順序.png

  1. 前臺進程 -Activte process
  2. 可見進程-Visible Process
  3. 服務進程 - Service process
  4. 後臺進程 Background process
  5. 空進程-Empty process

前臺

前臺process是與用戶交互的控制項的應用程式,處於“活動”狀態的Activity

可見

可見進程為activity可見,不屬於前臺,但不能與用戶交互的進程。

服務

已經啟動的Service

後臺

後臺的進程中Activity是不可見的,後臺進程中沒有啟動任何的Service,即為後臺進程。

空進程,在資源需要的時候常常被殺掉。

Android的任務棧

App啟動時,系統會創建一個任務棧,棧也被叫做Task。退出activity的時候,要清除任務棧,任務棧會保留每個activity的信息,所以要安全的保存任務棧。

任務棧不是唯一的,也可有一個activity可以獨享一個任務棧。

正常模式下的棧是後進先出,在AndroidManifest.xml中啟動,通過android:launchMode進行設置的,有四種模式standard、singleTop、singleTask、singleInstance

Android的任務棧.png

  1. standard:預設,每次啟動重新創建。每創建一個activity,都會創建一個onCreate()->onStart()->onResume()。每一次都重新創建會消耗資源。

  2. singleTop:棧頂復用模式,棧頂存在則不創建,如果不在棧頂就又要重新創建,檢驗的是棧頂是否存在,即使在第二個,不是棧頂,activity也要被重新創建。

  3. singleTask:檢測整個任務棧,是否存在activity,如果存在就存放在棧頂,1)啟動singleTaskActivity,會將該Activity置於棧頂,它上面的所有activity都會被銷毀。2)其他AppsingleTask模式啟動該Activity時,會創建一個新的任務棧,如果啟動模式為singleTaskActivity已經在一個任務棧中,那麼啟動後,後臺的這個任務棧將一起切換至前臺。

  4. singleinstance:activity在整個系統當中有且只有一個實例,在任務棧只有一個activity,即是singleinstance

scheme跳轉協議

scheme跳轉協議為一種頁面內跳轉協議,跳轉頁面,根據H5頁面跳轉,跳轉app等。

結語

  • 本文主要講解 詳解Android中的四大組件之一:Activity詳解
  • 下麵我將繼續對JavaAndroid中的其他知識 深入講解 ,有興趣可以繼續關註

  • 小禮物走一走 or 點贊

送❤


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題來源:最近有同事需要執行批量刪除語句。根據他提供的業務需求,推薦他使用“TRUNCATE TABLE”語句。但使用該語句需要 ALTER許可權,這與執行用戶的角色不符。 解決辦法:使用EXECUTE AS語句修改執行許可權。代碼如下: 通過列印出來的loginame可以看出,執行用戶信息已經被修改。 ...
  • /*其實我也搞不懂為什麼要用SQL來創建,明明SQL Server有圖形化創建資料庫多省事啊!*/USE master;​DECLARE @sqlstr nvarchar(max)/*定義一個變數*/DECLARE @database_name nvarchar(20) = 'MyDB';/*這裡輸 ...
  • 最近在MySQL中遇到分組排序查詢時,突然發現MySQL中沒有row_number() over(partition by colname)這樣的分組排序。並且由於MySQL中沒有類似於SQL Server中的row_number()、rank()、dense_rank()等排名函數,所有找到以下實 ...
  • 前言: 想把單行函數進行一個比較全面的總結,並分享給有需要的人,有不明之處還請多多指教。 SQL函數:Oracle的內置函數,包括了單行函數和多行函數,本文重點講解單行函數。單行函數又可以分為許多類,本人將常用的分為5大類: 字元函數(7個),數值函數(7個),日期函數(7個),轉換函數(3個),通 ...
  • 一.備份概述 數據安全是資料庫的生命,資料庫在使用過程中難免會遇到如:使用者的誤操作或是被惡意修改,硬體故障導致數據文件無法被訪問,自然災害導致機房在物理上的損毀。本章從備份與恢復的功能作為解決問題的切入點。在實際工作中會遇到:使用什麼樣的備份策略(比如完整備份,文件備份,差異備份,日誌備份),如何 ...
  • 數據表定義 數據表(或稱表)是資料庫最重要的組成部分之一,資料庫中以表為組織單位存儲數據,資料庫只是一個框架,數據表才是其實質內容。資料庫管理工具中可以顯示資料庫中的所有數據表,數據表是資料庫中一個非常重要的對象,是其他對象的基礎。 創建數據表 方式一:打開資料庫管理工具-》登錄-》選擇資料庫-》選 ...
  • 在目前相信大多數IT開發人員對於人工智慧+大數據並不陌生,使用的場景也越來越廣,日常開發中前端同學也逐漸接觸了更多與大數據相關的開發需求。因此對大數據知識也有必要進行一些學習理解。大數據學習資料分享群119599574 不管你是小白還是大牛,小編我都挺歡迎,今天的源碼已經上傳到群文件,不定期分享乾貨 ...
  • Android Fragment用法的講解 碎片,它的出現是為了更好展示UI的設計,讓程式更加得到充分的展示。 的出現,如微信的額主界麵包含多個 ,使得微信功能更加簡潔明瞭。 Fragment組件 是`Android 3.0 Fragment`實現更好的用戶體驗。 Fragment載入 1. 靜態加 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...