当活动开始时停止应用程序进入前台

问题描述:

因此,我有一个启动屏幕的应用程序,一旦完成加载就启动另一个活动。当用户在加载时点击主页按钮时,应用程序将转到后台,然后在该活动启动后回到前台。有什么办法可以阻止这种情况发生?当活动开始时停止应用程序进入前台

+2

简单的解决方案,但不是答案:没有闪屏。更严重的是,您可以在开始下一步之前检查活动状态。或者当飞溅停止时,您可以取消您的加载。 – njzk2

+0

我宁愿没有启动画面,但我需要掩盖在用户位置获得修复的初始延迟。我想开始这个活动,但是在没有它的背景下,它会回到前台。我希望有一个简单的意图标志来这样做,而不是以编程方式干涉活动的状态。 – dramzy

+0

在后台启动一项活动?听起来更像是一种服务。 – njzk2

两件事情:

首先,确保你在拆除参考位置服务。我假设你正在使用Google的API客户端。如果你不是,你应该是。因此,在,请确保您注销听众:

@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(); 
    } 
} 

但是:我觉得你在思考这个问题的解决。为什么有两项活动?为什么不是一个,并有一个“等待状态”,直到你获得定位?你的等待状态可能是任何事情。或者像你说的那样全屏闪屏(使用RelativeLayout并堆叠视图)。当你得到修复时,淡化飞溅。

然后将该位置存储到savedInstanceState包。当你的活动状态改变时,你会知道不再显示飞溅。

+0

谢谢,将主屏幕覆盖在主要活动的顶部似乎是正确的方式,并感谢关于使用GoogleAPIClient的提示。 – dramzy