導航:首頁 > 操作系統 > android匿名內部類

android匿名內部類

發布時間:2025-06-30 14:15:08

① 如何在android studio里設置點擊監聽事件

Androidstudio 添加點擊監聽事件有三種方法:

一.匿名內部類

1.先找到那個控制項(初始化)

private Button bt1; //onCreate方法外

bt1 = (Button)findViewById(R.id.button1);

2.設置事件監聽器

bt1.setOnClickListener(new OnClickListener(){

public void onClick(View v){

System.out.println("我的按鈕被點擊了");

}

});

(1)android匿名內部類擴展閱讀:

如果按鈕綁了監聽器

按鈕點擊是通過OnClickListener來實現的

大致的流程應該是這樣的

public class MainActivity extends Activity

{

private Button loginButton;

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//創建監聽器對象

loginButton = (Button) findViewById(R.id.login_btn);

OnClickListener listener = new ButtonClickListener();

loginButton.setOnClickListener(listener);

}

/**
* 監聽器類

*/

class ButtonClickListener implements OnClickListener

{

@Override

public void onClick(View v)

{

switch (v.getId())

{

case R.id.login_btn:

//點擊後的邏輯處理

break;

}

}

}

② Android線程泄漏場景以及解決辦法

1.非靜態內部類的靜態實例

非靜態內部類會持有外部類的引用,如果非靜態內部類的實例是靜態的,就會長期的維持著外部類的引用,組織被系統回收,解決辦法是使用靜態內部類

2.多線程相關的匿名內部類和非靜態內部類

匿名內部類同樣會持有外部類的引用,如果在線程中執行耗時操作就有可能發生內存泄漏,導致外部類無法被回收,直到耗時任務結束,解決辦法是在頁面退出時結束線程中的任務

3.Handler內存泄漏

Handler導致的內存泄漏也可以被歸納為非靜態內部類導致的,Handler內部message是被存儲在MessageQueue中的,有些message不能馬上被處理,存在的時間會很長,導致handler無法被回收,如果handler是非靜態的,就會導致它的外部類無法被回收,解決辦法是1.使用靜態handler,外部類引用使用弱引用處理2.在退出頁面時移除消息隊列中的消息

4.Context導致內存泄漏

根據場景確定使用Activity的Context還是Application的Context,因為二者生命周期不同,對於不必須使用Activity的Context的場景(Dialog),一律採用Application的Context,單例模式是最常見的發生此泄漏的場景,比如傳入一個Activity的Context被靜態類引用,導致無法回收

5.靜態View導致泄漏

使用靜態View可以避免每次啟動Activity都去讀取並渲染View,但是靜態View會持有Activity的引用,導致無法回收,解決辦法是在Activity銷毀的時候將靜態View設置為null(View一旦被載入到界面中將會持有一個Context對象的引用,在這個例子中,這個context對象是我們的Activity,聲明一個靜態變數引用這個View,也就引用了activity)

6.WebView導致的內存泄漏

WebView只要使用一次,內存就不會被釋放,所以WebView都存在內存泄漏的問題,通常的解決辦法是為WebView單開一個進程,使用AIDL進行通信,根據業務需求在合適的時機釋放掉

7.資源對象未關閉導致

如Cursor,File,Broadcast等,內部往往都使用了緩沖,會造成內存泄漏,一定要確保關閉它並將引用置為null

8.集合中的對象未清理

集合用扮行團於保存對象,如果集合越來越大,不進行合理的清理,尤其是入股集合是靜態的

9.Bitmap導致內存泄漏

bitmap是比較占內存的,所以一定要在不使用的時候及時進行清理,避免靜態變數持有大的bitmap對象

10.監聽器未關閉

很多需要register和unregister的系統服務要在合適的時候進行unregister,手動添加的listener也廳橘需要帶顫及時移除

閱讀全文

與android匿名內部類相關的資料

熱點內容
孕婦運動app哪個好用 瀏覽:892
phpredis資料庫設計 瀏覽:195
腹部有壓縮感不舒服 瀏覽:959
三層立柱腰筋需要加密嗎 瀏覽:293
蘋果手機伺服器如何更改 瀏覽:62
變頻空調壓縮機好壞 瀏覽:27
銳捷雲桌面伺服器版還原 瀏覽:777
享庫生活源碼 瀏覽:403
廣發app付款碼在哪裡找 瀏覽:609
冷庫壓縮機接線 瀏覽:377
檢測睡眠的app哪個好 瀏覽:31
加密文件在隱私空間哪裡打開 瀏覽:336
單片機大屏 瀏覽:320
python實現ssh登錄 瀏覽:437
滴滴車內錄音怎麼加密 瀏覽:935
php組合模式 瀏覽:768
負責支付寶安全的程序員 瀏覽:483
linux解壓所有gz的包 瀏覽:735
不做程序員幹嘛 瀏覽:9
我的世界伺服器國際服地址 瀏覽:365