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

Android Activity 跳轉空指針異常排查:Logcat 關鍵日誌分析指南

     編輯:程式設計疑難解答

常見原因

  1. 目標 Activity 未在 Manifest 註冊:<activity android:name=".SecondActivity"> 缺失。
  2. Intent 傳遞的 Bundle 為 null 但目標 Activity 直接取值:getIntent().getExtras().getString("key") 拋 NPE。
  3. 啟動模式衝突:singleTask 導致舊實例 onNewIntent 未處理新數據。
  4. Context 為 null:在非 Activity 類中用 getApplicationContext() 啟動 Activity 需加 FLAG_ACTIVITY_NEW_TASK。

Logcat 關鍵字過濾

adb logcat | grep -E "AndroidRuntime|Exception|Caused by|YourPackageName"

重點查看:

  • java.lang.NullPointerException 堆疊頂部行號。
  • ActivityNotFoundException 提示未註冊。
  • Caused by: java.lang.NullPointerException: Attempt to invoke virtual method '...' on a null object reference 定位具體物件。

防禦性編程範例

// 發起跳轉
Intent intent = new Intent(this, TargetActivity.class);
if (data != null) intent.putExtra("key", data);
startActivity(intent);

// 目標 Activity 安全取值
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String value = getIntent().getStringExtra("key"); // 不會拋 NPE,無值返回 null
    if (value == null) value = "default";
}

調試技巧

  • Android Studio Debug 模式 斷點在 startActivity 與目標 onCreate。
  • 啟用 StrictMode 檢測主執行緒磁碟/網路操作。
  • 使用 adb shell dumpsys activity activities 查看任務堆疊狀態。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved