導航:首頁 > 操作系統 > android變數銷毀

android變數銷毀

發布時間:2022-07-18 23:05:17

android 什麼時候會被回收

在整個應用結束的時候,就是Application銷毀後,但是一般退出應用後Application不會立即銷毀,所以建議手動銷毀一些必要的static 變數,還有android開發中盡量少使用static變數,容易內存溢出,和出現一些異常。

❷ Android開發中當一個activity被銷毀,他內部的所有成員變數(定義的button,textview..)都會被銷毀嗎

銷毀的時候,有方法會處理這些事,這些內部的成員變數,因為不會再被使用,就要被銷毀。

我沒有系統學過Android,但是他是用java語言開發,那麼機制應該和java一樣。
java有專門的垃圾回收機制,你不用了的,垃圾回收就會將這些用不到的東西回收掉。(我想,活動裡面,稍微復雜點。)

❸ android 主進程銷毀了,線程會不會也銷毀

不會自動銷毀,除非主動關閉它們。
一、銷毀的方法
1、通過線程
Hanlder是線程與Activity通信的橋梁,利用handler接收到任務線程,放到任務隊列裡面派對執行。
//調用該任務線程的run() 方法執行任務線程。
Handler updateBarHandler =new handler();
handler.post(Runnable Thread);
//移除handler里的任務線程,調用線程的stop()方法,銷毀線程。
handler.removecallbacks(Runnable Thread);
2、通過Timer
通過以下四種方法終止一個timer線程:
a)調用timer的cancle方法。可以從程序的任何地方調用此方法,甚至在一個timer task的run方法里;
b)讓timer線程成為一個daemon線程(可以在創建timer時使用new Timer(true)達到這個目地),這樣當程序只有daemon線程的時候,它就會自動終止運行;
c)當timer相關的所有task執行完畢以後,刪除所有此timer對象的引用(置成null),這樣timer線程也會終止;
d)調用System.exit方法,使整個程序(所有線程)終止。

❹ android static 什麼時候被回收

android中,定義的static變數屬於全局變數,不會被GC回收,它們會一直佔用內存。直到程序結束時才會被回收。
Android是用Java開發,其靜態變數的生命周期遵守Java的設計。靜態變數是在類被load的時候分配內存的,並且存在於方法區。當類被卸載的時候,靜態變數被銷毀。在PC機的客戶端程序中,一個類被載入和卸載,可簡單的等同於jvm進程的啟動和結束。
一、靜態變數在類被載入的時候分配內存。
當啟動一個app的時候,系統會創建一個進程,此進程會載入一個Dalvik VM的實例,然後代碼就運行在DVM之上,類的載入和卸載,垃圾回收等事情都由DVM負責。也就是說在進程啟動的時候,類被載入,靜態變數被分配內存。
二、靜態變數在類被卸載的時候銷毀。
一般情況下,所有的類都是默認的ClassLoader載入的,只要ClassLoader存在,類就不會被卸載,而默認的ClassLoader生命周期是與進程一致的。

❺ android 關於Activity里成員變數生命周期問題

如果沒有做數據保存的話,那應該是此Activity一直沒有銷毀。既然沒銷毀,那成員變數肯定一直在的。點圖標進入程序,那應該是會運行onRestart吧,你列印一下onRestart.

❻ android中static修飾的變數在Activity銷毀後,還存在嗎

1. static變數 按照是否靜態的對類成員變數進行分類可分兩種:一種是被static修飾的變數,叫靜態變數或類變數;另一種是沒有被static修飾的變數,叫實例變數。兩者的區別是: 對於靜態變數在內存中只有一個拷貝(節省內存),JVM只為靜態分配一次內存,在載入類的過程中完成靜態變數的內存分配,可用類名直接訪問(方便),當然也可以通過對象來訪問(但是這是不推薦的)。對於實例變數,沒創建一個實例,就會為實例變數分配一次內存,實例變數可以在內存中有多個拷貝,互不影響(靈活)。 2. static代碼塊 static代碼塊是類載入時,初始化自動執行的。如果static代碼塊有多個,JVM將按照它們在類中出現的先後順序依次執行它們,每個代碼塊只會被執行一次。 3. static方法 static方法可以直接通過類名調用,任何的實例也都可以調用,因此static方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變數和實例方法(就是不帶static的成員變數和成員成員方法),只能訪問所屬類的靜態成員變數和成員方法。因為static方法獨立於任何實例,因此static方法必須被實現,而不能是抽象的abstract。 static方法只能訪問static的變數和方法,因為非static的變數和方法是需要創建一個對象才能訪問的,而static的變數/方法不需要創建任何對象。 ******** static的數據或方法,屬於整個類的而不是屬於某個對象的,是不會和類的任何對象實例聯繫到一起。所以子類和父類之間可以存在同名的static方法名,這里不涉及重載。所以不能把任何方法體內的變數聲明為static,例如: fun() { static int i=0; //非法。 } 其實理解static是只有一個存儲地方,而使用時直接使用,不需要創建對象,就能明白以上的注意事項。 另外,一般的類是沒有static的,只有內部類可以加上static來表示嵌套類。

❼ android cleartop 被銷毀的activity會調用哪個方法

第一種是正常的銷毀,比如用戶按下Back按鈕或者是activity自己調用了finish()方法;


另一種是由於activity處於stopped狀態,並且它長期未被使用,或者前台的activity需要更多的資源,這些情況下系統就會關閉後台的進程,以恢復一些內存。


需要注意的是這其中有一種情況就是屏幕旋轉的問題,當用戶旋轉手機屏幕,每一次都會導致activity的銷毀和重新建立。


在第二種情況下,盡管實際的activity實例已經被銷毀,但是系統仍然記得它的存在,當用戶返回到它的時候,系統會創建出一個新的實例來代替它,這里需要利用舊實例被銷毀時候存下來的數據。這些數據被稱為「instancestate」,是一個存在Bundle對象中的鍵值對集合。


預設狀態下,系統會把每一個View對象保存起來(比如EditText對象中的文本,ListView中的滾動條位置等),即如果activity實例被銷毀和重建,那麼不需要你編碼,layout狀態會恢復到前次狀態。


但是如果你的activity需要恢復更多的信息,比如成員變數信息,則需要自己動手寫了。


onSaveInstanceState()

如果要存儲額外的數據,必須覆寫回調函數onSaveInstanceState().


系統會在用戶離開activity的時候調用這個函數,並且傳遞給它一個Bundleobject,如果系統稍後需要重建這個activity實例,它會傳遞同一個Bundleobject到onRestoreInstanceState()和onCreate()方法中去。


當系統停止activity時,它會調用onSaveInstanceState()(過程1),如果activity被銷毀了,但是需要創建同樣的實例,系統會把過程1中的狀態數據傳給onCreate()和onRestoreInstanceState()(圖中標出的2和3)。


❽ android開發線程問題: 求教怎麼銷毀子線程用destroy老是報錯的...

線程,一般是用來循環做某件事情的,你可以設置個變數每次循環之前,每次循環開始時候檢查變數,不行就退出。如果是讀取文件,連接網路等耗時的,那就interrupt,或者不管他,超時自動回報錯的

❾ android怎樣定義不銷毀的變數,就是關閉程序下次運行後變數值沒有改變

使用靜態變數
public static int state = 0;

閱讀全文

與android變數銷毀相關的資料

熱點內容
iua編譯器下載官方 瀏覽:84
壓縮機高低壓快速平衡 瀏覽:873
phpai 瀏覽:707
怎麼不被命令 瀏覽:86
大話緣定三生伺服器什麼便宜 瀏覽:967
idea編譯內部類 瀏覽:466
pdf2word在線轉換 瀏覽:588
tim儲存在哪個文件夾 瀏覽:621
華碩電腦u盤加密最簡單方法 瀏覽:853
編程過路馬游戲 瀏覽:608
python多重線性回歸 瀏覽:516
冰箱壓縮機工作圖 瀏覽:843
OTC機器人編程師 瀏覽:948
簽名的apk能防止反編譯嗎 瀏覽:311
我的世界伺服器如何版本 瀏覽:285
集合競價買入額指標源碼 瀏覽:114
雲伺服器安裝華為歐拉系統 瀏覽:959
c面向對象編程教程 瀏覽:527
php的重定向跳轉頁面跳轉 瀏覽:411
電氣控制與plcpdf 瀏覽:465