07 |「異步任務」

前言

實踐是最好的學習方式,技術也如此。

文章目錄

    • 前言
    • 一、進程與線程
      • 1、進程
      • 2、線程
    • 二、實現
    • 三、異步任務加載器

一、進程與線程

1、進程

  • 進程(Process)是操作系統分配資源的基本單位,它是一個執行中的程序實例;
  • 每個進程都有自己獨立的內存空間,不同進程的內存是相互獨立的;
  • 在Android系統中,每個應用都會以一個新的進程運行,系統會自動幫我們管理這些進程;
  • 默認情況下,Android系統會為每個App分配一個進程。這個默認進程里可以包含多個Activity);
  • 當在這個進程內啟動一個新的Activity時,是直接在該進程create一個Activity實例,不會創建新進程;
  • 多個Activity會共享該應用進程的資源和內存空間;
  • 單純啟動新Activity并不會造成進程切換,對系統資源影響較小

2、線程

* 線程就是讓==一個程序==有能力==同時完成多件事情==;
  • 線程是正在運行的程序中的一條獨立的執行路徑;
  • 主線程
    • 當 Android 程序啟動時,系統會創建一個主線程,也稱為 UI 線程;
    • UI 線程是應用程序與 Android UI 工具包中的組件交互的方式(在這個線程中可以更新UI,處理用戶輸入事件等。UI組件像Activity、View都是在UI線程中初始化和創建的。);
    • UI線程負責處理用戶界面的創建、更新和響應用戶交互事件,確保應用的用戶界面保持流暢、響應迅速,并提供良好的用戶體驗
    • UI 線程只能處理和界面相關的工作,比如繪制界面,處理點擊事件等,區分UI線程和工作線程,就是讓耗時操作不阻塞界面,以保證應用的流暢性和用戶體驗;
  • 后臺(工作)線程是除主線程或 UI 線程之外的任何線程;
  • AsyncTask:
    • 來簡化這種需要后臺工作的場景;
    • 可以把AsyncTask看成一個工人,我們在主線程中告訴它需要做什么工作,它會自己另開一個線程(后臺線程)去工作。工作完成后它再回到主線程,通過回調方法將結果返回給我們。這樣下來,我們的主線程(UI線程)就可以專注于更新界面,不會被阻塞。而AsyncTask也封裝了線程管理和線程間通信的復雜性,我們只需要告訴它做什么工作就可以了;
    • AsyncTask 通過異步線程可以避免阻塞,回調機制又可以獲取結果;

二、實現

  • 回調:至于回調的概念,它表示一種函數或方法,當特定事件發生時就會被執行。回調不會主動調用,而是在滿足條件時由別處調用以完成響應。在Android中,回調機制很常見,例如點擊事件的onClick()就是一個回調方法。

AsyncTask通過線程間的回調,很好地結合了后臺工作與UI更新,極大地方便了程序邏輯的管理。

  • TextView、Button;
  • 用戶單擊 Button 時,應用程序會休眠一段隨機時間,然后在喚醒時在 TextView 中顯示一條消息;
// 第一個泛型參數String: 表示異步任務輸入參數的類型:String
// 第二個泛型參數Integer: 表示后臺任務執行進度的類型:Integer
// 第三個泛型參數Bitmap: 表示異步任務最終返回結果的類型:// 知識點:<T>表示類型參數T,用于在定義Box類時傳入實際的類型
public class MyAsyncTask extends AsyncTask <String, Integer, Bitmap>{}

應用現在有一個在后臺執行工作的 AsyncTask 類,現在可以為“啟動任務”按鈕實現 onClick 方法來觸發后臺任務;

doInBackground():實現代碼以執行要在單獨線程上執行的工作

onPostExecute():在doInBackground()執行結束后,自動在UI線程被調用,并接收doInBackground()的返回值。函數參數就是從doInBackground()中返回的結果

三、異步任務加載器

EditText,Button,TextView
需求:用戶在 EditText 中輸入書名并點擊按鈕,查詢用戶正在查找的圖書的作者和書名,結果顯示在 TextView 中

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【大數據】Flink 詳解(二):核心篇 Ⅲ

Flink 詳解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅲ 29、Flink 通過什么實現可靠的容錯機制&#xff1f; Flink 使用 輕量級分布式快照&#xff0c;設計檢查點&#xff08;checkpoint&#xff09;實現可靠容錯。 30、什么是 Checkpoin 檢查點&#xff1f; Checkpoint …

百度 amis 當成 UI 庫用

百度 amis 當成 UI 庫用 1.獲取到這些 amis 對外提供的方法 var amisLib amisRequire(amis);// 獲取到這些 amis 對外提供的方法。 2.js中使用百度amis中 confirm var name"name";amisLib.confirm(請確認刪除 name !,"刪除").then((confirmed) > {if…

如何進行游戲平臺搭建?

游戲平臺搭建涉及多個步驟和技術&#xff0c;下面是一個大致的指南&#xff1a; 市場調研和定位&#xff1a;首先&#xff0c;要了解游戲市場和受眾的需求&#xff0c;選擇適合的游戲類型和定位。 選擇平臺類型&#xff1a;決定是要搭建網頁平臺、移動應用平臺還是其他類型的…

群暉6.X便捷的安裝cpolar內網穿透

群暉6.X便捷的安裝cpolar內網穿透 文章目錄 群暉6.X便捷的安裝cpolar內網穿透前言1. 下載cpolar的群暉套件1.1 打開群暉套件中心1.2 選擇“手動安裝”1.3 選擇下載cpolar套件位置 2. 打開cpolar的Web-UI界面3. 注冊會員 前言 隨著硬件設備和軟件技術的發展&#xff0c;以及數據…

概率圖模型(Probabilistic Graphical Model,PGM)

概率圖模型&#xff08;Probabilistic Graphical Model&#xff0c;PGM&#xff09;&#xff0c;是一種用圖結構來描述多元隨機變量之間條件獨立性的概率模型。它可以用來表示復雜的概率分布&#xff0c;進行有效的推理和學習&#xff0c;以及解決各種實際問題&#xff0c;如圖…

Redis小例子

MAC電腦下Redis的安裝&#xff1a; brew install redis下面給一個Java操作redis的小例子 import redis.clients.jedis.Jedis;public class Demo {public static void main(String[] args) {// 創建 Jedis 客戶端實例&#xff0c;連接到本地 Redis 服務器&#xff0c;默認端口…

RedisDesktopManage

RDM 簡介下載安裝 簡介 RedisDesktopManager&#xff08;RDM&#xff09;是一個開源的跨平臺圖形界面工具&#xff0c;用于管理和操作 Redis 數據庫。它提供了一個用戶友好的界面&#xff0c;使用戶能夠輕松地連接、瀏覽、查詢和修改 Redis 數據&#xff0c;而無需使用命令行界…

教你10分鐘內學習如何CSS 設置網頁打印時的樣式

本文將教您開始為要打印的頁面編寫CSS所需要的一切提供幫助。 media 規則 If you’ve done any responsive design, you’ll already know about the media rule. As well as different screen sizes, media also lets you target “print” media. Here’s an example: 如果…

競賽項目 深度學習的動物識別

文章目錄 0 前言1 背景2 算法原理2.1 動物識別方法概況2.2 常用的網絡模型2.2.1 B-CNN2.2.2 SSD 3 SSD動物目標檢測流程4 實現效果5 部分相關代碼5.1 數據預處理5.2 構建卷積神經網絡5.3 tensorflow計算圖可視化5.4 網絡模型訓練5.5 對貓狗圖像進行2分類 6 最后 0 前言 &#…

【Java】一只小菜坤的編程題之旅【3】

文章目錄 1丶判定是否互為字符重排2、楊輝三角3丶某公司的1個面試題&#xff08;字符串包含問題&#xff09; 1丶判定是否互為字符重排 這個題我們用一個非常簡單的思想就能實現&#xff0c;我們先將字符串轉換為字符數組&#xff0c;然后對字符數組進行排序&#xff0c;然后再…

el-radio單選框,取消選中

1.背景&#xff1a;在公司開發需求中有一個選擇顏色的單選框&#xff08;黑色&#xff0c;白色&#xff09;&#xff0c;每種顏色選擇后均支持取消選中&#xff0c;可是el-radio標簽不支持取消選中。 2.解決&#xff1a; 方法1: <el-radio-group v-model"radioColo…

【Apollo】自動駕駛的平臺背景,平臺介紹

作者簡介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在學習C/C&#xff0c;Java&#xff0c;Python等 作者主頁&#xff1a; 七七的個人主頁 文章收錄專欄&#xff1a; 七七的閑談 歡迎大家點贊 &#x1f44d; 收藏 ? 加關注哦&#xff01;&#x1f496;&#x1f…

spring boot 集成 jetcache【基礎篇:@Cached、@CreateCache、@CacheRefresh】

手打不易&#xff0c;如果轉摘&#xff0c;請注明出處&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/129832925 目錄 前言 版本 配置通用說明 項目結構 代碼 啟動類 實體類 基礎使用——增刪改查&#xff08;Cached、CacheInv…

opencv實戰項目 手勢識別-手勢控制鍵盤

手勢識別是一種人機交互技術&#xff0c;通過識別人的手勢動作&#xff0c;從而實現對計算機、智能手機、智能電視等設備的操作和控制。 1. opencv實現手部追蹤&#xff08;定位手部關鍵點&#xff09; 2.opencv實戰項目 實現手勢跟蹤并返回位置信息&#xff08;封裝調用&am…

虛擬機安裝 Ubuntu桌面版,宿主機無法訪問虛擬機 ufw 防火墻簡單使用

虛擬機安裝 Ubuntu桌面版&#xff0c;宿主機無法訪問虛擬機 問題處理安裝ssh服務ufw防火墻 放行ssh服務ufw 常用命令 問題 本次安裝使用的 ubuntu-22.04.2-desktop-amd64 &#xff0c;網絡連接使用的是橋接&#xff0c;查看ubuntu的ip是正常的&#xff0c;與宿主機在同一個網段…

力扣的板子

板子 線性篩法求質因子的板子快速冪 線性篩法求質因子的板子 int limit 100000; //修改為題目中的數字的上限 bool isprime[100005] {0}; //保存所有1~limit中的數字是不是質數 int myprime[100005] {0}; //保存2~limit中所有數字的最小質因子 int primes[100000] {0}; …

airflow是什么

Airflow 簡介 Airflow是一個基于有向無環圖(DAG)的可編程、調度和監控的工作流平臺&#xff0c;它可以定義一組有依賴的任務&#xff0c;按照依賴依次執行。airflow提供了豐富的命令行工具用于系統管控&#xff0c;而其web管理界面同樣也可以方便的管控調度任務&#xff0c;并…

Lua 閉包

一、Lua 中的函數 Lua 中的函數是第一類值。意味著和其他的常見類型的值&#xff08;例如數值和字符串&#xff09;具有同等權限。 舉個例子&#xff0c;函數也可以像其他類型一樣存儲起來&#xff0c;然后調用 -- 將 a.p 指向 print 函數 a { p print } -- 使用 a.p 函數…

(原創)Flutter與Native頁面互相跳轉

前言 實際開發混合項目時&#xff0c;常常會有頁面跳轉的需求 如果是原生界面和flutter界面需要互相跳轉 這種情況應該怎么處理呢&#xff1f; 今天這篇博客主要就來介紹下這個情況 其實想一下&#xff0c;這個問題可以拆成四個小的問題來分析&#xff1a; 1&#xff1a;原生界…

什么是全局代理,手機怎么設置全局代理

目錄 什么是全局代理 全局代理的優缺點 優點 缺點 手機怎么設置全局代理 注意事項 總結 在計算機網絡和信息安全中&#xff0c;全局代理是一種常用的技術手段&#xff0c;用于將網絡流量通過代理服務器進行轉發和處理。本文將介紹什么是全局代理&#xff0c;探討全局代理…