应用在后台时更改Android活动?

时间:2015-11-13 04:58:18

标签: java android multithreading android-intent android-activity

我的Android应用使用ComponentCallbacks2检测应用是否在后台(比如用户按下主菜单)。现在,我希望应用在不更改用户界面的情况下更改当前在后台的活动。

我唯一的问题是:如何更改用户在后台时的活动,以便在他/她返回应用时弹出,而不是在我拨打startActivity(Intent i)后立即弹出。

以下是我希望我的应用执行的步骤:

  1. 用户在应用程序(WORKS)中打开主菜单
  2. 应用程序检测到应用程序处于后台(WORKS)
  3. 使用意图,打开其他活动,无需中断用户所使用的任何应用程序(DOESN' T WORK)
  4. 现在,第一步和第二步都很顺利。但是,当我使用意图更改活动时,活动会弹出...让用户感到不安。基本上,我想加载活动,以便尽快当用户打开应用程序备份时,它会通过屏幕进入游戏。

    我对这个主题的研究,以及我自己试图解决这个问题的内容:

    我已就此主题进行了很多的研究,但其他问题则是关于正在运行的流程。为此,显然,人们会使用服务。我的问题是激光专注于如何在用户在后台时更改活动,以便在他/她返回应用时弹出。我也尝试使用onContinue()方法,但每次用户更改活动时都会调用它,使其不可靠。

    感谢您的专家建议:

1 个答案:

答案 0 :(得分:0)

我的建议是将您的偏好设置保存在onStop中(或当应用处于后台模式时)。然后在SplashActivity的OnCreate中使用该信息来启动Game-Over活动。

##

在您检测背景的活动中

 @Override
protected void onStop(){
   super.onStop();


  SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putBoolean("isGameOver", isGameOver);

  // Commit the edits!
  editor.commit();
}
######### Splash Activity
public class SplashActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    Thread timerThread = new Thread(){
        public void run(){
            try{
                sleep(2000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }finally{

   SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
   boolean isGameOver = settings.getBoolean("isGameOver", false);
               if(isGameOver) {
                Intent intent = new Intent(SplashActivity.this,GameOverActivity.class);
                startActivity(intent);
 } else {
        // Start Main Activity
    }
            }
           }
        }; timerThread.start();
}

@Override
protected void onPause() {
    super.onPause();
    finish();
}
}