1. 程式人生 > >application的context和activity的context區別

application的context和activity的context區別

問題:在一個activity中有時可以隨意的使用這兩個context,但是android為什麼這麼設計,在程式中什麼時候要用到Application的Context呢?

Application的Context是一個全域性靜態變數,SDK的說明是隻有當你引用的這個context的生命週期超過了當前activity的生命週期,而和整個應用的生命週期掛鉤時,才去使用這個application的context。

一種推薦的用法就是應用程式註冊廣播broadcast時,使用這個context。

引用application context並不會導致記憶體洩漏。引用activity的context才會導致記憶體洩漏,當你的引用物件的生命週期超過了當前activity的生命週期時,系統回收你的activity時發現還有一個context的強引用,而不去銷燬這個activity,導致記憶體洩漏,在開發過程中,需要非常重視這點。

相關推薦

spring的ApplicationContextBeanFactory區別

使用spring5.0.7 ,JDK8測試 區別如下; BeanFactory 採取延遲載入,第一次getBean時才會初始化Bean ApplicationContext 在載入applicatio

Spring ApplicationContext WebApplicationContext 區別

WebApplicationContext  繼承了ApplicationContext介面,是ApplicationContext的擴充套件,它增加了WEB應用特性,還可以檢視解析、主題解析、對映,通

ApplicationContextActivityContext、ViewContextContextImpl(BaseContext)的區別

ContextWrapper ContextWrapper 是 ContextImpl(也就是BaseContext) 的包裝,所有對 ContextWrapper 的操作都會用代理到 BaseContext 上。 Application和Activity和

關於spring的bean工廠ApplicationContext容器的區別

     兩者都是裝入bean定義資訊,裝配bean,根據需要分發bean。但是ApplicationContext提供更多功能,它提供了bean工廠所沒有的解析資訊文字工具,包括對國際化的支援,提供了載入檔案資源的通用方法,如載入圖片,它可以用註冊為監聽器的bean傳送事件

GETPOST區別總結

get 、post 、區別一、GET和POST區別的普遍看法:HTTP 定義了與服務器交互的不同方法,最常用的有4種,Get、Post、Put、Delete,如果我換一下順序就好記了,Put(增),Delete(刪),Post(改),Get(查),即增刪改查,下面簡單敘述一下:1)Get, 它用於獲取信息,註

JS中const、varlet區別

方法 pre 命令 con 使用 它的 comm 作用 影響 在JavaScript中有三種聲明變量的方式:var、let、const。 1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。 const b

equals == 的區別

strong 都是 什麽 brush -s 新的 equals方法 實現 繼承 首先 看比較的對象是否為字符串,若為(String)字符串用equals 比較, 比較的是他們的值。相同返回 true ,不相同返回false. package one; p

mybatis中的#$的區別

背景 插入 trac sql註入 -m .com article 參數 -s 1. #將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那麽解析成sql時的值為order by "111", 如果傳

hibernate中hql語句中listiterate區別

每次 hibernate 寫入 所有 讀取 條件 iter 查詢 hql 1.使用list()方法獲取查詢結果,每次發出一條語句,獲取全部數據。2.使用iterate()方法獲取查詢結果,先發出一條SQL語句用來查詢滿足條件數據的id,然後依次按照這些id查詢記錄,也就是要

java中ArrayListLinkedList區別

插入 list 新的 查找 arr tro 基於 列表 時間復雜度 ArrayList和LinkedList最主要的區別是基於不同數據結構 ArrayList是基於動態數組的數據結構,LinkedList基於鏈表的數據結構,針對這點,從時間復雜度和空間復雜度來看主要區別:

mysql中replicate_wild_do_tablereplicate_do_db區別

lan rep cati mil 多人 pan think lte 避免 使用replicate_do_db和replicate_ignore_db時有一個隱患,跨庫更新時會出錯。 如在Master(主)服務器上設置 replicate_do_db=test(my.conf

2000行之宏中###的區別

ret fun color bsp nbsp urn div def include #include<stdio.h> #define Fun(a,b) a##b int main() { x=‘H‘; y=‘W‘; printf("

HTML提交方式postget區別(實驗)

des url action 通過 性別 清除數據 map pass pack HTML提交方式post和get區別(實驗) 一、post和get區別 get提交,提交的信息都顯示在地址欄中。 post提交,提交的信息不顯示地址欄中,顯示在消息體中。 二、客戶端代碼

stringbuffer stringbuilder區別

uil build 線程 區別 單線程 線程安全 多線程操作 buffer 少量數據 stringbuffer 和 stringbuilder速度 小於 線程安全 線程非安全 單線程操作

水晶頭鍍金30U50區別

style 價格 -1 font 質量 穩定性 tex 穩定 size U是厚度單位,1μm≈40u。一般來說鍍金越厚,越耐插播,耐酸堿腐蝕,觸點壽命越長,傳輸穩定性越好,價格越貴。但是事實上,鍍金層的質量,或者說鍍金對水晶頭質量的影響,跟工藝的關系更密切。水晶頭鍍金30U

MyBatis Mapper.xml文件中 $#的區別

優先 註入 sql註入 jdb 防止 自動 || myba 由於 1.優先使用#{paramName,jdbcType=VARCHAR} 寫法,除了可以防止sql註入以外,它還能在參數裏含有單引號的時候自動轉義, 而${paramName}由於是類似於拼接sql的寫法,不具

require(),include(),require_once()include_once()區別

流程 code 一個 str 定義 檔案 目標 失敗 錯誤處理 require 的使用方法如 require("MyRequireFile.php"); 。這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成

ZeptoJquery區別

-- error exce cal lba 滑動 set 忽略 瀏覽器 ---恢復內容開始--- 《zepto移動端事件》 1、$("#xx").tap(function(){ //tap在屏幕點擊時觸發     alert("sssss"); }) 2、$("d

Antelope Barracuda區別

iter strong 大小 實驗 時也 uda cuda int innodb Antelope和Barracuda均為innodb存儲引擎的文件格式,Antelope為默認格式,非壓縮;Barracuda為壓縮格式;兩者主要的不同在於對大數據量的存儲時所占用的空間差異

MongoDBRedis區別

一定的 虛擬 數據結構 提升 b數 技術 處理 aof memcach 簡介 MongoDB更類似MySQL,支持字段索引、遊標操作,其優勢在於查詢功能比較強大,擅長查詢JSON數據,能存儲海量數據,但是不支持事務。 mysql在大數據量時效率顯著下降,mongodb更多時