从前台返回应用程序 - 启动默认活动(仅限发布)

时间:2015-07-28 09:22:18

标签: android android-intent

我遇到了一个非常奇怪的问题,只会在发布版本中出现。

我的应用实现了一个启动屏幕,在1秒延迟后自动清除并启动主要活动。启动画面在我的清单中使用MAIN / LAUNCHER意图过滤器声明。

调试应用程序时,一切都按预期工作(顺便说一句,我使用的是Android Studio 1.3)。

但是,这是我在发布时启动应用程序时会发生的情况:

  1. 启动应用程序,出现启动画面
  2. 1秒后,启动画面结束并打开主要活动 - 到目前为止,非常好。
  3. 我点击主页按钮,应用程序转到后台
  4. 重新调用应用程序 - 启动初始屏幕
  5. 1秒钟后,将删除启动画面,并以原始状态打开主要活动。
  6. 如果我杀了该应用并再次打开它,则此错误消失,并且在我重新安装该应用之前不会再次出现。

    我看了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>
    

    发布打开下一个活动的确切代码有点困难,因为我的应用程序逻辑有些复杂,下一个打开的活动在很大程度上取决于变体&amp;内部应用状态。

1 个答案:

答案 0 :(得分:0)

很抱歉,但由于缺乏声誉,我无法发表评论。 你能添加一些代码吗?比如当你调用主页面时,当你关闭启动画面和从你发布的链接中添加的代码时? 这将使回复更容易:)

编辑: 无论如何,我发现了this帖子,根据它,我认为你可以使用

@Override
protected void onPause()
{
    super.onPause();
    startActivity(getIntent().addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
}

希望它有所帮助:)