我有一个 SplashScreenActivity,如果在 MainActivity 上没有检测到触摸,它将每 2 分钟运行一次。如果在 SplashScreenActivity 上按下“开始”按钮,它将启动 MainActivity。
我的问题是,当在 SplashScreenActivity 上按下“开始”按钮时,每次都会创建一个 MainActivity 的新实例,因此每次都会加载我的库和初始化(在 OnCreate() 中)。这会显着减慢我的应用程序并在按下按钮时滞后。我只希望它在应用程序首次启动时运行一次。
我试过使用
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
...当 Intent 启动时,但我在 MainActivity 的 OnCreate() 中的库和初始化仍在再次运行。
在 SplashScreenActivity 中按下“开始”按钮时,运行以下方法:
public void startIntent(View v){
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
有什么帮助吗?
目前有行(取出setFlags):
Intent intent = new Intent(Email.this, MainActivity.class);
startActivity(intent);
每次活动开始时,仍然会调用 MainActivity 的 OnCreate()。
所以我发现如果我设置以下内容:
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
我可以成功返回到我的 MainActivity 而无需创建新实例。
点击这里了解更多信息。