package pasta.music.activities; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import com.afollestad.async.Action; import com.afollestad.async.Async; import com.afollestad.async.Done; import com.afollestad.async.Result; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; import pasta.music.Pasta; import pasta.music.PlayerService; import pasta.music.R; import pasta.music.utils.StaticUtils; public class MainActivity extends AppCompatActivity { Pasta pasta; SharedPreferences prefs; @Bind(R.id.start) View start; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); pasta = (Pasta) getApplicationContext(); pasta.setScreen(this); prefs = PreferenceManager.getDefaultSharedPreferences(this); if (prefs.getBoolean("first_run", true)) { prefs.edit().putBoolean("first_run", false).apply(); startActivity(new Intent(MainActivity.this, IntroActivity.class)); start.setVisibility(View.VISIBLE); } else openRequest(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { openRequest(); } @OnClick(R.id.start) public void firstStart() { openRequest(); } private void openRequest() { if (StaticUtils.isPermissionsGranted(this)) { Async.parallel( new Action() { @NonNull @Override public String id() { return "fetch_artists"; } @Nullable @Override protected Object run() throws InterruptedException { pasta.setUpArtists(); return null; } }, new Action() { @NonNull @Override public String id() { return "fetch_albums"; } @Nullable @Override protected Object run() throws InterruptedException { pasta.setUpAlbums(); return null; } }, new Action() { @NonNull @Override public String id() { return "fetch_songs"; } @Nullable @Override protected Object run() throws InterruptedException { pasta.setUpSongs(); return null; } } ).done(new Done() { @Override public void result(@NonNull Result result) { new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(PlayerService.ACTION_INIT); intent.setClass(MainActivity.this, PlayerService.class); startService(intent); startActivity(new Intent(MainActivity.this, HomeActivity.class)); finish(); } }, 1500); } }); } else StaticUtils.requestPermissions(this); } }