android開發之路12(android四大組件&Fragment&AsyncTask類)

来源:http://www.cnblogs.com/smallkure/archive/2016/04/29/5446189.html
-Advertisement-
Play Games

一.Activity組件1.簡介:Activity組件是Android四大組件之一,通常一個Activity相當於一個用戶界面,我們可以通過載入佈局文件將Android提供的各種控制項及自定義控制項顯示到用戶界面,併為其註冊監聽,來響應用戶的即時操作。2.Activity生命周期方法:①onCreate ...



一.Activity組件
1.簡介:Activity組件是Android四大組件之一,通常一個Activity相當於一個用戶界面,我們可以通過載入佈局文件將Android提供的各種控制項及自定義控制項顯示到用戶界面,併為其註冊監聽,來響應用戶的即時操作。
2.Activity生命周期方法:
①onCreate():Activity被第一次創建時執行該方法,該方法通常用來做一些初始化操作;
②onStart():當Activity對用戶可見時會執行該方法;
③onResume():當Activity開始與用戶交互時,會執行該方法;
④onRestart():把Activity從onStop()狀態喚醒時,會執行該方法;
⑤onPause():當前Activity啟動一個不完全覆蓋當前Activity的Activity時,會調用該方法,也就是說該方法是用來過度界面的;
⑥onStop():當前Activity對用戶完全不可見的時候,會調用當該方法;
⑦onDestroy():當Activity銷毀前會調用該方法
⑧onSaveInstanceState():該方法用於保存Activity的狀態信息;
⑨onRestoreInstanceState()該方法用於重新載入Activity的狀態信息;
⑩onConfigurationChanged():該方法用於屏幕橫豎屏切換時處理相關操作
3.生命周期方法在不同情況的執行順序:
兩個Activity之間:
當顯示MainActivity時(執行順序:①--》②--》③)
如果直接點擊後退鍵,那麼(執行順序:⑤--》⑥--》⑦)即MainActivity從back stack清除,退出app。
如果按下Home鍵時(執行順序:⑤--》⑥),再次打開應用(執行順序:④--》②--》③)
如果需要在MainActivity中打開OtherActivity,那麼首先執行MainActivity的⑤---》【再執行OtherActivity的①--》②--》③】--》接著執行MainActivity的⑥,此時如果需要通過後退鍵返回到MainActivity時,執行OtherActivity的⑤,接著執行MainActivity的④--》②-->③,然後執行OtherActivity的⑥--》⑦
一個Activity橫豎屏切換時:
已經顯示的Activity切換成橫屏時,執行順序⑧--》⑤--》⑥--》⑦--》①--》②--》⑨--》③;不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次;設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫屏或者豎屏時各只會執行一次;
設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行⑩


二.Service組件
1.簡介:Service是一個沒有用戶界面的長生命周期的程式,主要用於開發那些不需要圖形界面的功能,比如:音樂播放器的後臺播放功能。
2.Service的生命周期方法:
onCreate():第一次創建服務時執行該方法;
onStartCommand():啟動服務時執行該方法;
onBind(Intent intent):通過bindService()方法啟動的service執行該方法
onStart():運行服務時執行該方法;
onDestroy():終止服務時執行該方法;
3.生命周期方法在不同情況的執行順序:
當通過startService()啟動Service時: service生命周期方法的執行順序:onCreate()---》onStartCommand()---》onStart()...---》判斷:①重新啟動服務;②終止服務;
選擇①時,接著執行2.onStartCommand()---》3.onStart()....
選擇②時,執行4.onDestroy()方法終止服務;
當通過bindService()啟動Service時:Service生命周期方法的執行順序:onCreate()---》onBind(),不執行onStartCommand()和onStart()

三.BroadcastReceiver組件
1.簡介:Android系統運行後通常會發出各種廣播,比如低電量,時區改變,修改語言選項等等的系統操作都會使得系統發出對應的廣播,而BroadcastReceiver通常用於處理系統的廣播並作出相應處理。同時也可以定製應用的廣播並將信息反饋給用戶
2.生命周期方法:
onReceive():當廣播發送到接受者時執行該方法,可以通過該方法查看廣播的數據

四.ContentProvider組件
1.簡介:這個類主要是對Android系統中進行共用的數據進行包裝,並提供一組統一的訪問介面供其他程式調用,開發過程中,我們只需要繼承這個類,並重寫該類用於提供數據和存儲數據的方法,就可以向其他應用共用其數據。
2.ContentProvider的生命周期方法:
onCreate():第一次創建ContentProvider的時候執行該方法

五.Fragment控制項:
1.簡介:Fragment與Activity關係緊密,通常我們在一個Activity中放置多個Fragment來提高界面的可操作性,儘管它們擁有類似的生命周期方法和執行順序,但Fragment是一個控制項,而Activity是一個組件。因此,對於Fragment來說,主要還是為了實現在大屏幕設備上動態的和更靈活的UI設計,這也優化了Activity面對的界面適配問題。
2.Fragment的生命周期方法:
①onAttach():在Activity與Fragment關聯之後執行該方法;
②onCreate():Fragment第一次創建時執行該方法;
③onCreateView():在Fragment載入佈局文件,或者創建視圖的時候執行該方法;
④onActivityCreated():在Activity的onCreate()方法執行完之後執行該方法;
⑤onStart():當Fragment對用戶可見時執行該方法;
⑥onResume():當Fragment開始運行,並可以和用戶交互時執行該方法;
⑦onPause();當Fragment對用戶即將不可見時執行該方法;
⑧onStop():當Fragment完全不可見時執行該方法;
⑨onDestroy():
⑩onDestroyView():會使onCreateView()中創建的視圖與當前Fragment相分離,並清除該視圖;
onDetach():在Activity與Fragment解除關聯後執行該方法;
3.Fragment的生命周期方法執行順序:
在Activity打開某個Fragment時,Fragment生命周期方法執行順序為①---》②---》③---》④---》⑤---》⑥{此時當點擊後退鍵時,執行順序為:⑦---》⑧---》⑩---》⑨---》onDetach();當點Home鍵時執行的順序為⑦---》⑧,當返回到app時,執行順序為⑤---》⑥}

六.AsyncTask類
1.簡介:Android的AsyncTask比Handler更輕量級一些,適用於簡單的非同步處理,目的都是為了不阻塞主線程,處理後臺的比較耗時的任務。使得用戶在使用過程中不會出現長時間等待界面響應及卡頓的現象,從而達到比較高的用戶體驗。
2.AsyncTask中重要的的方法:
①onPreExecute():當非同步任務執行之前開始執行此方法,可以在這裡顯示進度對話框;
②doInBackground():此方法在後臺線程執行,完成非同步任務的主要工作,通常需要較長的時間。在執行過程中可以通過調用publishProgress()來更新任務的進度;
③onProgressUpdate():此方法在主線程中執行,用於顯示任務執行的進度;
④onPostExecute():此方法在主線程中執行,非同步任務執行的結果作為此方法的參數返回;
3.AsyncTask方法執行順序:①---》②---》③---》④

*備註:以上內容涉及的所有方法為了便於閱讀,都省去了參數;

 


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

-Advertisement-
Play Games
更多相關文章
  • System_Server進程運行在system server進程中的服務比較多,這是整個Android框架的基礎Native服務SurfaceFlinger這是framebuffer合成的服務,將各個應用程式及應用程式中的邏輯視窗圖像數據(surface)合成到一個物理視窗中顯示(framebuf ...
  • storyboard 文件的認識 ...
  • 類、結構體和枚舉可以定義下標,他可以快速簡單地訪問集合(set,array,dict)的元素,你可以使使用下標來獲取和設置集合元素。 你可以定義一個類型的多個下標,通過索引值類型的不同來進行重載,而且索引值的個數可以是多個。 語法 先看一個實例 它允許你通過在實例後面的方括弧中傳入一個或者多個的索引 ...
  • 以前寫過一個沉浸式狀態欄 的實現方式 Android 沉浸式狀態欄 實現方式一 現在有個更為簡單的實現方式 。 相關鏈接 http://www.apkbus.com/forum.php?mod=viewthread&tid=255929&extra=page%3D3%26filter%3Dsorti ...
  • 一、UIApplication Delegate 1、基本介紹 所有的移動操作系統都有個致命的缺點:app很容易受到打擾。比如一個來電或者鎖屏會導致app進入後臺甚至被終止。 還有很多其它類似的情況會導致app受到干擾,在app受到干擾時,會產生一些系統事件,這時UIApplication會通知它的 ...
  • android:theme="@style/AppTheme"換成android:theme="@style/Theme.AppCompat.NoActionBar" ...
  • 運行效果 ...
  • 正在看《第一行代碼》,記錄一下使用 HTTP 協議訪問網路的內容吧! 在Android發送Http請求有兩種方式,HttpURLConnection和HttpClient。 1.使用HttpURLConnection 首先要獲取到HttpURLConnection的實例,只需要new出一個URL對象 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...