Я делаю заставку, которая определяет, какую Activity
загрузить, основываясь на том, запускается ли приложение в первый раз (или нет) ..
Код выполняется в своем собственном действии - MainActivity
, которое будет действовать в качестве экрана-заставки. Если запускается впервые , я загружаю IntroActivity
.. Если он был запущен до , я загружаю PrimaryActivity
.
У меня есть пара вопросов :
1) - Использует ли runOnUiThread
правильный способ сделать это?
2) - Я исследовал темы, относящиеся к всплывающим экранам здесь, в StackOverflow, которые предлагают использовать Handler
- рекомендуется ли это в моем конкретном сценарии использования?
3) - Должен ли я закрыть это Thread
, как только я определю, какое действие загрузить, и если да, то как мне это сделать?
Бонус:
4) - Я собираюсь сделать это действие всплывающим окном в стиле загрузки ..
Какой самый простой способ добиться этого?
Заранее благодарим за любую предоставленную помощь!
Мой текущий код показан ниже:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Make a Toast pop-up.
Toast.makeText(MainActivity.this, "Checking Settings...", Toast.LENGTH_LONG).show();
//// BEGIN PREFERENCES CHECK ////
// Set the wait time for the Splash screen.
final int SPLASH_WAIT_TIME = 5000;
// Start new Thread to check for first start and load appropriate Activity.
Thread t = new Thread(new Runnable() {
@Override
public void run() {
// Wait before continuing.
try {
Thread.sleep(SPLASH_WAIT_TIME);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Initialize SharedPreferences.
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
// Create a new boolean and preference and set it to true.
boolean isFirstStart = getPrefs.getBoolean("firstStart", true);
// If the App has NEVER started before...
if (isFirstStart) {
// Declare an Intent for loading IntroActivity.
final Intent intentLoadIntro = new Intent(MainActivity.this, IntroActivity.class);
// Launch IntroActivity.
runOnUiThread(new Runnable() {
@Override public void run() {
startActivity(intentLoadIntro);
}
});
// Make a new Preferences Editor.
SharedPreferences.Editor prefsEditor = getPrefs.edit();
// Edit Preference to make firstStart False so Intro never loads again.
prefsEditor.putBoolean("firstStart", false);
// Apply the changes.
prefsEditor.apply();
// Close MainActivity so the Back hardware button doesn't return to it.
finish();
}
// If the App HAS been started before...
else {
// Declare an Intent for loading PrimaryActivity.
final Intent intentLoadPrimary = new Intent (MainActivity.this, PrimaryActivity.class);
// Launch PrimaryActivity.
runOnUiThread(new Runnable() {
@Override public void run() {
startActivity(intentLoadPrimary);
}
});
// Close MainActivity so the Back hardware button doesn't return to it.
finish();
}
}
});
// Start Thread t to determine Activity to load after Splash (MainActivity).
t.start();
// END of onCreate.
}
// End of MainActivity.
}