终止应用程序后启动启动屏幕

时间:2018-12-05 15:55:21

标签: java android

在我的项目中,我的静态成员为User.current。 如果我在后台终止运行该应用程序,则User.current将为null。我从启动屏幕上的服务器获取用户。 运行终止的应用程序时,我想启动启动画面。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果调用服务器,则可能使用了异步任务。在异步任务

...
@Override
protected Boolean doInBackground(Void... params) {
     ...
     value = jsonObj.getString("value");
     return true;
}

protected void onPostExecute(Boolean iHaveValue) {
    if(iHaveValue){
       // use case 1 or 2
       // 1
       Intent i = new Intent(getApplicationContext(), MainActivity.class);
       i.putExtra("value", value);
       startActivity(i);

       // 2
       SharedPreferences sharedpreferences = getSharedPreferences("user", Context.MODE_PRIVATE);
       SharedPreferences.Editor editor = sharedpreferences.edit();
       editor.putString("value", value);
       editor.commit();

       Intent i = new Intent(getApplicationContext(), MainActivity.class);
       startActivity(i);
    }
}

您将用户带到doInBackground(Void ... params)上。在onPostExecute(Boolean iHaveValue)方法中,您只需转到MainActivity。 您可以使用意图将值放在MainActivity上并接收(1)或使用共享首选项(2)

(1)

在SplashScreen中

Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.putExtra("value", value);
startActivity(i);

在MainActivity中

Intent editIntent = new Intent(getApplicationContext(), Splashscreen.class);

(2)

在SplashScreen中

SharedPreferences sharedpreferences = getSharedPreferences("user", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("value", value);
editor.commit();

在MainActivity中

SharedPreferences prefs = getSharedPreferences("user", MODE_PRIVATE);
value = prefs.getString("value", "null");

如果需要在多个位置使用此值,则sharedPreferences会很有帮助(情况2)。如果没有,请使用putExtra将信息发送到MainActivity(案例1)。