我的Android应用使用ComponentCallbacks2
检测应用是否在后台(比如用户按下主菜单)。现在,我希望应用在不更改用户界面的情况下更改当前在后台的活动。
我唯一的问题是:如何更改用户在后台时的活动,以便在他/她返回应用时弹出,而不是在我拨打startActivity(Intent i)
后立即弹出。
以下是我希望我的应用执行的步骤:
现在,第一步和第二步都很顺利。但是,当我使用意图更改活动时,活动会弹出...让用户感到不安。基本上,我想加载活动,以便尽快当用户打开应用程序备份时,它会通过屏幕进入游戏。
我对这个主题的研究,以及我自己试图解决这个问题的内容:
我已就此主题进行了很多的研究,但其他问题则是关于正在运行的流程。为此,显然,人们会使用服务。我的问题是激光专注于如何在用户在后台时更改活动,以便在他/她返回应用时弹出。我也尝试使用onContinue()方法,但每次用户更改活动时都会调用它,使其不可靠。
感谢您的专家建议:
富
答案 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();
}
}