我遇到一個僅在發佈版本中出現的非常奇怪的問題。從前臺返回應用程序 - 默認活動已啓動(僅限發佈)
我的應用程序實現了一個啓動屏幕,它在1秒延遲後自行清除並啓動主要活動。啓動畫面在我的清單中用MAIN/LAUNCHER intent過濾器聲明。
調試應用程序時,一切都按預期工作(我使用的是Android Studio 1.3)。
然而,這裏是我在發行啓動應用程序會發生什麼:
- 啓動應用程序時,出現閃屏
- 1秒後,閃屏完成,並打開主活動 - 到目前爲止,好。
- 我打的home鍵,應用程序轉到後臺
- 調用應用程序後面 - 閃屏打開
- 1秒後,中,閃屏被刪除,主要業務是在其原來的狀態下打開。
如果我殺了應用程序並再次打開它,該錯誤消失,直到我重新安裝應用程序纔會再次出現。
我看着this的帖子,並在那裏實施瞭解決方法,似乎解決了這個問題,但我仍然非常在意這個錯誤,並想知道是否有其他人看到類似的東西最近發生了是非常古老的,並表明這個問題可能與日食有關)。
編輯
這是我加入到我的閃屏活動的代碼(從上面鏈接後):
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0)
{
// call code which launches the main activity here
finish();
return;
}
正如我所說的,這增加的代碼去除問題,但我米試圖瞭解爲什麼這個問題發生在第一位?爲什麼這隻發生在發佈版本中,爲什麼只有在應用程序第一次安裝時纔會發生,並且一旦應用程序被終止並重新啓動,停止發生?
新活動開有以下意圖的標誌:FLAG_ACTIVITY_SINGLE_TOP
& FLAG_ACTIVITY_CLEAR_TOP
這裏是我的清單的相關部分:
<activity
android:name="com.my.app.SplashScreenController"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/LightTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這是一個有點困難後這將打開確切的代碼接下來的活動,因爲我的應用程序邏輯有點複雜,下一個打開的活動很大程度上取決於內部應用程序狀態的變體&。
你能粘貼啓動畫面和清單代碼?另外我想問一件事,你是否在從啓動畫面啓動意圖之前調用finish()? –
在啓動下一個活動後立即在啓動畫面上調用finish()。 –