Splash Activity 5 秒後啟動 StartingPoint Activity,但應用啟動後無反應,無報錯。
<activity android:name=".Splash">
<intent-filter>
<action android:name="android.intent.action.SPLASH" /> <!-- 錯誤:非標準啟動 action -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".StartingPoint"> <!-- 缺少 intent-filter -->
</activity>
<activity android:name=".Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <!-- 標準入口 -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 可選:額外 action 供其他組件調用 -->
<intent-filter>
<action android:name="com.example.ACTION_SPLASH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".StartingPoint">
<intent-filter>
<action android:name="com.example.learn.tam.StartingPoint" /> <!-- 自定義 action -->
<category android:name="android.intent.category.DEFAULT" /> <!-- 隱式啟動必需 -->
</intent-filter>
</activity>
強烈建議 使用顯式 Intent,不依賴 Manifest action 解析:
// Splash.java
Intent intent = new Intent(Splash.this, StartingPoint.class);
startActivity(intent);
finish(); // 關閉 Splash
優勢:編譯期檢查、無需 Manifest action、性能更高、安全可控。
| 屬性 | 含義 | 常見值 |
|---|---|---|
action | 動作類型 | MAIN, VIEW, SEND, 自定義字符串 |
category | 額外分類 | LAUNCHER(桌面圖標), DEFAULT(隱式啟動必需), BROWSABLE(瀏覽器鏈接) |
data | 數據匹配 | scheme, host, path, mimeType |