Java tutorial
package com.dm.wallpaper.board.activities; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.TextView; import com.danimahardhika.android.helpers.core.ColorHelper; import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.helpers.LocaleHelper; import com.dm.wallpaper.board.utils.LogUtil; import java.net.HttpURLConnection; import java.net.URL; import butterknife.ButterKnife; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; /* * Wallpaper Board * * Copyright (c) 2017 Dani Mahardhika * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ public class WallpaperBoardSplashActivity extends AppCompatActivity { private Class<?> mMainActivity; private AsyncTask<Void, Void, Boolean> mCheckRszIo; private AsyncTask<Void, Void, Boolean> mPrepareApp; @Deprecated public void initSplashActivity(@Nullable Bundle savedInstanceState, @NonNull Class<?> mainActivity, int duration) { initSplashActivity(savedInstanceState, mainActivity); } public void initSplashActivity(@Nullable Bundle savedInstanceState, @NonNull Class<?> mainActivity) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); mMainActivity = mainActivity; int color = ContextCompat.getColor(this, R.color.splashColor); TextView splashTitle = ButterKnife.findById(this, R.id.splash_title); splashTitle.setTextColor(ColorHelper.getBodyTextColor(color)); prepareApp(); checkRszIo(); } @Override protected void attachBaseContext(Context newBase) { LocaleHelper.setLocale(newBase); super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } @Override public void onBackPressed() { if (mCheckRszIo != null) mCheckRszIo.cancel(true); super.onBackPressed(); } @Override protected void onDestroy() { if (mPrepareApp != null) mPrepareApp.cancel(true); super.onDestroy(); } private void prepareApp() { mPrepareApp = new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... voids) { while (!isCancelled()) { try { Thread.sleep(500); return true; } catch (Exception e) { LogUtil.e(Log.getStackTraceString(e)); return false; } } return null; } @Override protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean); if (aBoolean) { mPrepareApp = null; startActivity(new Intent(WallpaperBoardSplashActivity.this, mMainActivity)); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); } } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } private void checkRszIo() { mCheckRszIo = new AsyncTask<Void, Void, Boolean>() { final String rszio = "https://rsz.io/"; @Override protected Boolean doInBackground(Void... voids) { while ((!isCancelled())) { try { Thread.sleep(1); URL url = new URL(rszio); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setReadTimeout(6000); connection.setConnectTimeout(6000); int code = connection.getResponseCode(); return code == 200; } catch (Exception e) { LogUtil.e(Log.getStackTraceString(e)); return false; } } return false; } @Override protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean); mCheckRszIo = null; WallpaperBoardActivity.sRszIoAvailable = aBoolean; LogUtil.e("rsz.io availability: " + WallpaperBoardActivity.sRszIoAvailable); } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } }