Wpis z mikrobloga

Czy zastosowanie takiego rozwiązania w aplikacji na Androida jest ok czy raczej nieakceptowalne? Napisałem prostą aplikację dla siebie gdzie chciałem by przez 1,5 sekundy był ekran powitalny a potem już docelowy.
Kod w uproszczeniu wygląda tak:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_screen);
new WaitToDisplay().execute();
}

private class WaitToDisplay extends AsyncTask {

@Override
protected String doInBackground(String... params) {
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
Thread.interrupted();
}
return "Executed";
}

@Override
protected void onPostExecute(String result) {
setContentView(R.layout.activity_main);
}

@Override
protected void onPreExecute() {}

@Override
protected void onProgressUpdate(Void... values) {}
}
}

W skrócie: aplikacja wstaje, ustawia layout z XMLa w aktywności przez setContentView i uruchamia AsyncTask który po chwili w tej samej aktywności ustawia inny layout. Czy tak można to robić czy lepiej coś działać z fragmentami?

#programowanie #androiddev #programista15k
  • 20
A po co chcesz sam siebie zmuszać do czekania 1.5 sekundy przy odpalaniu aplikacji? Jeżeli nie trwa żadne ładowanie danych ani nic produktywnego, to lepiej jak najszybciej wpuścić usera do apki.
W skrócie: aplikacja wstaje, ustawia layout z XMLa w aktywności przez setContentView i uruchamia AsyncTask który po chwili w tej samej aktywności ustawia inny layout. Czy tak można to robić czy lepiej coś działać z fragmentami?


@elektro155: tak to 15k nie zarobisz kolego. android:windowBackground to protip
@elektro155: Od razu do sedna: do poprawki.

1. Tak jak już koledzy pisali powyżej, wstrzymywanie aplikacji na 1.5s na start jest anty-wzorcem. Aplikacje powinny startować tak szybko jak to tylko możliwe. (Oczywiście rozumiem że ta aplikacja / ten problem to Twój use-case, chciałeś się tego nauczyć więc dalsza wypowiedź będzie na ten temat)

2. MainActivity - w aplikacji nie powinno być MainActivity ponieważ taka nazwa nie daje żadnego powiązania z logiką
@lubie_programowac:
1. Aplikacja w tym przypadku nie miala wysyartowac tak szybko jak powinna, miala miec ten "splash screen"
2. Aplikacja sklada sie z dwoch aktywnosci z glownej z drugiej z informacjami o projekcie takze implementacjabjakiejkowiek logiki biznesowej mija sie z celem.
3a.po mimo wyjscia z main activity w trakcie trwania async task nie ma bledow a po powrocie drugi widok jest uruchamiany i tak
3b slyszalem o rxjava i o zastosowaniach