即使应用程序在后台,活动也会打开

时间:2014-11-07 10:05:36

标签: android android-asynctask

我有一个有点奇怪的问题,我似乎无法在谷歌搜索中找到任何有相同问题的人,尽管这可能是因为我没有很好地解释它。

在我的应用中,用户登录后,一旦他们点击登录加载活动打开,此后主页面活动就会打开。

现在,如果应用程序处于加载活动状态,并且用户按下了“主页”'按钮在他们的手机上或转到另一个应用程序我的活动仍将继续在后台加载信息。

加载完成后,无论应用程序是否仍在使用,都会启动主页面活动。然后,该主页面将打开用户正在做的任何事情。

我使用异步任务进行加载,使用以下onPostExecute()方法:

@Override
public void onPostExecute() {
    //open the main page  
    Intent mainPage = new Intent(getApplicationContext(), MainPageActivity.class);                             
    mainPage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    mainPage.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK );
    startActivity(mainPage);
}

阻止此行为的最佳方法是什么?

我希望下次用户将应用程序带到前台时,主页面活动可以打开/已经打开我不想让它在他们正在做的事情之前打开。

感谢您的时间

2 个答案:

答案 0 :(得分:0)

在AsyncTask中,您正在启动Activity ...您应该向Activity发送一个intent,以便在它仍在运行时正确响应。

换句话说,您的AsyncTask调用startActivity,如果您不希望活动正在运行,它应该将结果发送到服务。即使没有活动,服务也会运行。然后,如果用户在您的应用程序中,您可以从Activity注册服务上的侦听器。看这篇文章:

Notify activity from service

您需要确保侦听器不启动Activity,但这应该很容易。

答案 1 :(得分:0)

  

阻止此行为的最佳方法是什么?

确保在startActivity未运行时不要致电Activity。您可以在加载活动的AsyncTaskonPause()方法中停止onStop()