首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 工具類中 Context 為 Null?正確傳遞與持有策略

     編輯:程式設計綜合問答

在工具類(非 Activity/Service)使用 `Context` 時頻繁遇到 `NullPointerException`。

根本原因

工具類無生命週期,若靜態欄位持有 `Context` 易導致記憶體洩漏;若未傳入則為 `null`。

最佳實務

  1. 方法參數傳遞:每個需 Context 的公共方法加參數 `Context context`,調用處傳 `Activity.this` 或 `getApplicationContext()`。
    public static void showToast(Context ctx, String msg) {
        Toast.makeText(ctx.getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
    }
  2. 單例持有 Application Context:若工具類需長期使用(如資料庫、SharedPreferences),在 `Application.onCreate()` 初始化時 `MyUtil.init(getApplicationContext())`,內部靜態保存 `applicationContext`。
  3. 嚴禁持有 Activity Context:會阻礙 Activity 回收,導致洩漏。

參考詳解:Android Context 正確用法

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved