當前位置:首頁 » 安卓系統 » android靜態方法

android靜態方法

發布時間: 2022-04-27 20:38:41

① android開發中使用static的方法好,還是通過建立對象調用方法好

被static修飾的成員變數和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。只要這個類被載入,Java虛擬機就能根據類名在運行時數據區的方法區內定找到他們。因此,static對象可以在它的任何對象創建之前訪問,無需引用任何對象.
用static修飾的代碼塊表示靜態代碼塊,當Java虛擬機(JVM)載入類時,就會執行該代碼塊(用處非常大,呵呵)。

static{
Test5.a=3;
System.out.println(a);
Test5 t=new Test5();
t.f();
t.b=1000;
System.out.println(t.b);
}

靜態方法可以直接通過類名調用,任何的實例也都可以調用,因此靜態方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變數和實例方法(就是不帶static的成員變數和成員成員方法),只能訪問所屬類的靜態成員變數和成員方法。因為實例成員與特定的對象關聯!

② Android開發中,如何在靜態類中使用getResources()獲取圖片資源.

獲取resource需要context對象,所以你這個問題有如下幾個解決思路
1,使用Context作為參數,例如public
static
getResourcesStatic(Context
context,
int
resId)
2,使用Context作為成員變數,在構造函數中接受一個Context參數,並賦值給自己成員變數
這樣在此對象生命期內,都可以使用.
不過並不推薦這種做法,因為傳入的Context多數情況下是Activity,往往會附著很多資源,如背景圖片等,無法GC,導致過高的內存佔用.可以用下面的改進方式:
3,使用WeakReference
保存context的弱引用
使用時要注意判斷ref.get()是否為null

③ android中的static

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 studio中怎麼把代碼類轉換為靜態

進行使用的Android studio中進行對項目中代碼中開發,那在進行對代碼中的類,那麼就需要在代碼中進行輸入代碼中之後,就需要把代碼寫好的類進行轉換為靜態的方法。那麼在android studio怎麼轉出靜態方法呢

1、在Android studio中代碼的編輯器中,進行選中代碼中的文件名類之後。

2、進行選中的然後進行右擊的就會彈出了下拉菜單中進行選擇為「refactor」的選項菜單。

3、這樣就會彈出了下一級菜單中進行選擇「make static」的選項菜單。

4、然後就會彈出了make method static的框中,進行選中」preview「的選項。

5、就會彈出了find refactoring preview的,在下列框中都是為顯示需要轉換為靜態的方法的類。

6、直接進行點擊do refactor的按鈕即可。

7、可以在選中的類的類名添加了一個static的,這樣就是變為了靜態的類的方法了。

⑤ Android 4.0靜態IP設置方法是什麼

很多機油都會發現升級了Android
4.0以後無法使用靜態IP。其實不是Android4.0的問題,只是設置上有點區別而已,下面教大家如何在Android
4.0下設置靜態IP。
1、打開WIFI。
2、點擊你需要連接的WIFI接入點名稱。
3、輸入密碼以後,把輸入法隱藏一下就會發現「顯示密碼」和「顯示高級選項」。
4、勾選--顯示高級選項。
5、下拉一下會出現「IP設置」。
6、將選項中的DHCP改為--靜態。
7、改為靜態以後,下面繼續會出現幾項,填寫方式如下:IP地址:你手機的IP地址,一般是192.168.1.XXX(XXX可以在1-255之間,不能跟路由下的任一設備設置為一樣的IP地址)。
網關:你路由器的IP地址(大多數的路由默認IP會是192.168.1.1)。
網路前綴長度:不用修改。
域名1:WIFI接入點所使用的IP地址,一般是192.168.1.1或者192.168.0.1,具體要參考路由上的設置。
域名2:跟域名1一樣就可以了。
這樣您的手機上網可以正常使用靜態IP了。

⑥ android 靜態方法會造成內存泄漏嗎

一個不會被使用的對象,因為另一個正在使用的對象持有該對象的引用,導致它不能正常被回收,而停留在堆內存中。
內存泄漏的危害
最壞的情況,App可能會因為大量的內存泄漏而導致內存耗盡,引發Crash,如果內存未耗盡,App也會猶豫內存空間不足,出現頻繁的GC(垃圾回收),每次一出GC都是非常耗時的阻塞性操作,會造成設備非常嚴重的卡頓,給用戶的體驗就是,手機無論做什麼操作,都是卡的,這也是Android設備玩久了之後常見的現象。

⑦ 如何配置android靜態ip

1、打開WIFI。
2、點擊你需要連接的WIFI接入點名稱。
3、輸入密碼以後,把輸入法隱藏一下就會發現「顯示密碼」和「顯示高級選項」。
4、勾選--顯示高級選項。
5、下拉一下會出現「IP設置」。
6、將選項中的DHCP改為--靜態。
7、改為靜態以後,下面繼續會出現幾項,填寫方式如下:
IP地址:你手機的IP地址,一般是192.168.1.XXX(XXX可以在1-255之間,不能跟路由下的任一設備設置為一樣的IP地址)。
網關:你路由器的IP地址(大多數的路由默認IP會是192.168.1.1)。

⑧ Android studio怎麼轉成靜態方法

Android studio轉成靜態方法

工具

android studio

方法

  1. 在Android studio中代碼的編輯器中,進行選中代碼中的文件名類之後

⑨ android靜態方法和實例方法的區別

靜態方法的調用,是類名後直接加靜態方法即可。實例方法必須將類實例化後,用實例調用該實例方法。
靜態方法,只能調用類中的其他靜態屬性和靜態方法,不能調用類中的非靜態屬性和非靜態方法。
實例方法,可以調用靜態屬性和靜態方法,也可以調用實例屬性和實例方法。
靜態方法是屬於類的必須由類來調用,實例方法是屬於實例的必須實例化類後,用類的實例調用。

⑩ Android中單例模式和靜態方法在效率上哪個好

很多人包括我寫單例的時候,第一想到的就是懶漢式publicclassSingleton{;privateSingleton(){}(){if(instance==null){instance=newSingleton();}returninstance;}}代碼很簡單,而且是懶載入,只有調用getInstance方法是才會初始化。但是這樣是線程不安全的,即當多個線程並行調用getInstance的時候,就會創建多個實例,不能正常工作。所以這里就有了加鎖方式,將整個getInstance方法設為同步,添加synchronized關鍵字。publicclassSingleton{;privateSingleton(){}(){if(instance==null){instance=newSingleton();}returninstance;}}這樣簡單粗暴的方式,雖然做到了線程安全,但導致了同一時間內只能有一個線程能夠調用getInstance方法。其實我們僅僅需要對初始化的代碼進行同步,這就有了雙重檢驗鎖方式。publicclassSingleton{;privateSingleton(){}(){if(instance==null){//第一次檢查synchronized(Singleton.class){if(instance==null){//第二次檢查instance=newSingleton();}}}returninstance;}}這里第二次檢查,是因為如果有多個線程同時執行完了第一次檢查,這時如果同步塊內不進行第二次檢查的話,會生成多個實例了。但是看了相關資料後,發現這樣還是有點問題。引用資料中的介紹:由於instance=newSingleton(),這並非是一個原子操作,事實上在JVM中這句話大概做了下面3件事情。1.給instance分配內存2.調用Singleton的構造函數來初始化成員變數3.將instance對象指向分配的內存空間(執行完這步instance就為非null了)但是在JVM的即時編譯器中存在指令重排序的優化。也就是說上面的第二步和第三步的順序是不能保證的,最終的執行順序可能是1-2-3也可能是1-3-2。如果是後者,則在3執行完畢、2未執行之前,被線程二搶佔了,這時instance已經是非null了(但卻沒有初始化),所以線程二會直接返回instance,然後使用,然後順理成章地報錯。我們只需要將instance變數聲明成volatile就可以了。

熱點內容
hp存儲6350 發布:2025-05-15 05:40:41 瀏覽:232
怎麼更改電腦默認緩存位置 發布:2025-05-15 05:39:01 瀏覽:876
安卓qq公孫離在哪個戰區戰力最低 發布:2025-05-15 05:38:58 瀏覽:492
androidffmpeg壓縮 發布:2025-05-15 05:37:02 瀏覽:287
ftp簡稱是 發布:2025-05-15 05:37:02 瀏覽:120
光遇發光耳機怎麼設置安卓 發布:2025-05-15 05:32:03 瀏覽:112
台電安卓平板系統太低怎麼辦 發布:2025-05-15 05:20:00 瀏覽:508
安裝了zlib編譯報錯 發布:2025-05-15 05:19:56 瀏覽:167
二分演算法無序 發布:2025-05-15 05:18:22 瀏覽:29
網易我的世界伺服器組件怎麼安裝 發布:2025-05-15 05:16:58 瀏覽:312