当 activity 启动时停止应用程序进入前台

Stop application from going to foreground when an activity is started

所以,我有一个带有启动画面的应用程序,它会在加载完成后启动另一个 activity。当用户在加载时点击主页按钮时,应用程序会进入后台,然后在 activity 启动后返回前台。有什么办法可以阻止这种情况发生吗?

两件事:

首先,确保您正在拆除 onPause 中对定位服务的引用。我假设您使用的是 Google 的 API 客户端。如果你不是,你真的应该是。因此,在 onPause 中,确保取消注册监听器:

@Override
public void onPause()
{
    // Tear down Google API Client.
    if (googleApiClient != null)
    {
        if (googleApiClient.isConnected())
        {
            // Turn off location polling.
            LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
        }

        // Avoid leaks by making sure callbacks get unregistered.
        googleApiClient.unregisterConnectionCallbacks(this);
        googleApiClient.unregisterConnectionFailedListener(this);
        googleApiClient.disconnect();
    }
}

但是:我认为您在这个问题上想多了。为什么有两个活动?为什么不一个,并且有一个 "wait state" 直到你得到位置修复?您的等待状态可以是任何状态。或者如您所说的全屏启动(使用 RelativeLayout 并堆叠视图)。修复后,淡出飞溅。

然后将位置存储到 savedInstanceState 包中。当您的 activity 的状态发生变化时,您将知道不再显示启动画面。