Android Intent 是一種消息傳遞機制,用于在應用組件之間傳遞信息,如啟動 Activity、Service 或發送廣播。以下是一些常見的 Intent 類型:
顯式 Intent:顯式 Intent 通過指定目標組件的完整類名來明確指定要啟動或與之交互的組件(如 Activity、Service)。例如:
Intent explicitIntent = new Intent(this, TargetActivity.class);
startActivity(explicitIntent);
隱式 Intent:隱式 Intent 不直接指定目標組件的類名,而是通過指定 action、category 和 data 等信息來描述期望的操作,系統會自動匹配符合條件的組件來處理該 Intent。例如:
Intent implicitIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
startActivity(implicitIntent);
廣播 Intent:廣播 Intent 是一種向多個組件發送消息的方式,通常用于通知應用中的其他組件發生了某種事件。例如,當設備接收到短信時,系統會發送一個廣播 Intent 給所有注冊的廣播接收器。
啟動 Activity 的 Intent:這類 Intent 用于啟動特定的 Activity。除了顯式 Intent 外,還可以使用隱式 Intent 來啟動 Activity,只要系統能找到匹配的組件。
啟動 Service 的 Intent:與啟動 Activity 類似,啟動 Service 的 Intent 也可以是顯式的或隱式的。例如:
// 顯式啟動 Service
Intent serviceIntent = new Intent(this, MyService.class);
startService(serviceIntent);
// 隱式啟動 Service(需要 Service 在 Manifest 中聲明)
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.example.MY_SERVICE_ACTION");
startService(serviceIntent);
綁定 Service 的 Intent:當需要與 Service 進行數據交換或長時間通信時,可以使用綁定 Intent 將 Activity 與 Service 綁定在一起。例如:
Intent bindIntent = new Intent(this, MyService.class);
bindService(bindIntent, serviceConnection, Context.BIND_AUTO_CREATE);
系統廣播 Intent:系統廣播 Intent 是由系統發送的廣播,用于通知應用發生了某些全局事件,如網絡變化、電量變化等。應用可以注冊廣播接收器來監聽這些系統廣播。
自定義 Intent:除了上述標準 Intent 類型外,還可以創建自定義 Intent 來在應用內部或跨應用傳遞特定信息。自定義 Intent 通常包含額外的數據(如 extra 數據),以便接收方解析和處理。
了解這些常見的 Intent 類型有助于更好地利用 Android 的組件間通信機制。