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

Android Activity 跳轉崩潰完整調試指南:從斷點技巧到 Manifest 配置錯誤排查

     編輯:程式設計疑難解答

問題現象

從一個 Activity 跳轉到另一個 Activity 時,應用彈出「已停止運行」對話框。Logcat 可能顯示 ActivityNotFoundException 或 NullPointerException。

高效調試三步走

1. 環境隔離:關閉無關項目

Eclipse/AS 中右鍵其他項目選 Close Project,避免資源衝突、構建緩存干擾,加快啟動速度。

2. 斷點調試核心技巧

  • 在跳轉代碼行(startActivity(intent))打斷點。
  • Debug 模式啟動,執行到斷點。
  • F6 (Step Over):逐行執行,不進入方法內部。
  • F7 (Step Return):若誤進入系統/庫代碼(如 ActivityThread),按 F7 直接返回調用處。
  • 觀察 intent 對象:action、component、extras 是否符合預期。

3. Manifest 配置核對清單(高發錯誤區)

目標 Activity **必須在 AndroidManifest.xml 中聲明**,且 intent-filter 需匹配啟動 Intent:

錯誤示範:缺少聲明或 action 不匹配

<!-- 錯誤:SecondActivity 未聲明,或 action 不匹配 -->
<activity android:name=".SecondActivity">
    <intent-filter>
        <action android:name="com.example.activitytest.ACTION_START"/> <!-- 自定義 action -->
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

正確配置:顯式 Intent 無需 action,隱式 Intent 需精確匹配

<!-- 方式一:顯式 Intent (推薦,無需 action) -->
<activity android:name=".SecondActivity" />

<!-- 方式二:隱式 Intent (需完整匹配 action + category + data) -->
<activity android:name=".ThirdActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="http"/>
    </intent-filter>
</activity>

啟動代碼對應

// 顯式 Intent:直接指定類,無需 Manifest action
Intent explicit = new Intent(this, SecondActivity.class);
startActivity(explicit);

// 隱式 Intent:需匹配 ThirdActivity 的 intent-filter
Intent implicit = new Intent(Intent.ACTION_VIEW);
implicit.setData(Uri.parse("https://m.baidu.com"));
startActivity(implicit);

常見崩潰原因速查表

| 現象 | 可能原因 | 排查重點 | |------|----------|----------| | ActivityNotFoundException | Manifest 未聲明、包名錯誤、隱式 Intent 無匹配 | 檢查 <activity>、intent-filter | | NullPointerException | Intent 為 null、Extra 取值未判空 | 斷點檢查 Intent 構建過程 | | SecurityException | 權限不足(如調用系統 Activity) | 檢查 uses-permission、exported 屬性 |

最佳實踐建議

  1. **優先使用顯式 Intent** 跳轉應用內 Activity,安全、效能高、無需配置 action。
  2. 隱式 Intent 僅用於**跨應用調用**(如打開瀏覽器、相機、分享)。
  3. Manifest 中 android:exported 明確設置:內部 Activity 設 false,對外暴露設 true (API 31+ 強制要求)。
  4. 養成 **Debug + 斷點 + F6/F7** 的調試肌肉記憶,比盯著 Logcat 猜測快 10 倍。

掌握這套流程,Activity 跳轉崩潰不再是攔路虎,而是熟練駕馭 Android 四大組件的必經之路。

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