当 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 的状态发生变化时,您将知道不再显示启动画面。
所以,我有一个带有启动画面的应用程序,它会在加载完成后启动另一个 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 的状态发生变化时,您将知道不再显示启动画面。