我遇到了一个非常奇怪的问题,只会在发布版本中出现。
我的应用实现了一个启动屏幕,在1秒延迟后自动清除并启动主要活动。启动画面在我的清单中使用MAIN / LAUNCHER意图过滤器声明。
调试应用程序时,一切都按预期工作(顺便说一句,我使用的是Android Studio 1.3)。
但是,这是我在发布时启动应用程序时会发生的情况:
如果我杀了该应用并再次打开它,则此错误消失,并且在我重新安装该应用之前不会再次出现。
我看了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;内部应用状态。
答案 0 :(得分:0)
很抱歉,但由于缺乏声誉,我无法发表评论。 你能添加一些代码吗?比如当你调用主页面时,当你关闭启动画面和从你发布的链接中添加的代码时? 这将使回复更容易:)
编辑: 无论如何,我发现了this帖子,根据它,我认为你可以使用
@Override
protected void onPause()
{
super.onPause();
startActivity(getIntent().addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
}
希望它有所帮助:)