2015-07-01 94 views
0

在我的应用程序中,我有一个启动器Activity,它显示我的徽标并执行一些Web请求,然后启动主要的Activity并自行完成。 问题是我总是需要Android从启动Activity启动我的应用程序并执行请求。但是当用户在主Activity上按Button时,应用程序进入后台,一段时间后它将被Android回收。而当用户再次按下我的应用程序的图标Android主要活动的星星不是从启动Activity。 所以我需要任何时候Android回收我的主要Activity它启动我的应用程序从启动活动,但不是从主Activity如何强制Android始终从启动器活动开始

有没有办法做到这一点?

回答

1

看看活动生命周期http://developer.android.com/reference/android/app/Activity.html

首先,当应用程序进入onPause() state.then为什么你需要再次调用请求的我们的数据没有什么会改变?

如果是刚性finish()应用在MainActivity onPause()或者你可以从MainActivity itself.use onResume()调用请求,这样您就可以获取应用程序恢复状态。

0

您可以创建一个StartActivity,它检查应用程序状态,然后重定向到正确的Activity,然后销毁它自己。

例如(重定向到时没有登录尚未登录屏幕):

public class StartActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (MyState.getInstance().isLoggedIn()) { 
      Intent intent = new Intent(this, MainActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
      startActivity(intent); 
     } else { 
      Intent intent = new Intent(this, LoginActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
      startActivity(intent); 
     } 

     finish(); 
    } 

} 
+0

是我用我的启动活动这个原因。但是,当用户登录时,我需要进行一些网络请求并更新我的偏好设置中的一些数据,只有在这之后我才能开始主要活动,因为主要活动取决于该数据。但是当Android直接启动主要活动时,这些数据可能会过时。 – Andranik

+0

加载后,您可以使用您的意图中的Bundle传递数据。然后使用onSaveInstanceState()和onCreate(Bundle)来保存/恢复你的Actvity状态。这就好像该活动从未被销毁...... –

+0

如果您的数据可能无法访问数据,则可能需要将数据加载到MainActivity中,并向用户显示它正在刷新或进行其他操作。 –