当应用程序在后台时,如何更改活动

时间:2016-02-11 13:23:50

标签: android service android-asynctask

我有一个应用程序,它应该在切换到其他活动之前运行一些加载(I / O操作),这将显示加载的信息。我希望在切换之前完整地加载信息,这会导致一些设计问题。我可能会使用AsyncTask在后​​台运行东西,但从设计的角度来看,我不希望泄漏应用程序的整个上下文以响应结果。 Service的概念看起来更符合我的需求。
所以,让我表示我无法从设计角度解决的情况。应用程序启动,导致创建一些Activity等等。这个创建一个服务,在后台进行I / O操作。完成后,Application将Activity更改为指定的Activity。问题是,当应用程序处于后台时服务完成它的工作时,我应该如何处理这种情况。作为一名程序员,我想让我的应用程序重新打开第一个活动,然后将insta更改为以下活动,或者只需从"以下开始#34;一。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

我想让我的应用重新打开第一个活动,并将insta更改为以下一个

你可以这样。当您的服务中的处理完成后,保存SharedPreference中的值

Context ctx = getApplicationContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("LoadNewActivity", true); // or false
editor.commit();

现在在您的启动器活动onCreate()

中执行此操作
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
boolean loadNewActivity = prefs.getBoolean("LoadNewActivity", false);
if(loadNewActivity) 
{
    Intent intent = new Intent(this, MyNewActivity.class);
    startActivity(intent);
}
else 
{
    // Do normal startup
}