「みんなのコミック」は2018年10月31日を持ちまして更新を終了いたしました。
はじめに
この記事は「みんコミ Advent Calendar」の15日目の記事です。
「みんコミ」のAndroidアプリ(バージョン1.0.3)をベースに執筆しています。スクリーンショットは極力控える方針ですので、本記事を読む際には、「Google Play Store」からアプリをインストールしておくことをお勧めします。
「みんコミ」アプリは、起動時にスプラッシュスクリーンを表示します。
スプラッシュスクリーン自体、Googleはあまり推奨していないのですが、「みんコミアプリ」の場合は何らかの通信処理をしている様子なので、スプラッシュスクリーンの意味はそれなりにあるのだと認識しています。
なぜ通信をしていると思ったかというと、スプラッシュスクリーンの表示されている時間が一定ではなく、通信状態が悪いところでは長く表示されるためです。
僕は時間がかかるとバックキーでアプリを閉じるのですが、しばらくして別のアプリを使っているときに「みんコミ」アプリが立ち上がってきたりします。
Androidでは、Activityを終了してもプロセスは生きているので、バックグラウンド処理の際にはそのことを考慮しなくてはなりません。
忘れた頃に起動するとびっくりするので、スプラッシュスクリーンがキャンセルされたら、次の画面は起動しないという風にした方が良いと思います。
今回の場合、ActivityのライフサイクルのonPauseできちんとバックグラウンド処理より先に行かないように手当をする。
またはバックグラウンド処理が終わったときにisFinishing()
メソッドでActivityが終了しているかを判定し、終了していなかったとき(falseのとき)だけ、次の処理に進むようにすると良いと思います。
public class SplashActivity extends AppCompatActivity {
private static final long DELAY_TIME = 5 * 1000;
private final Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.mipmap.ic_launcher);
setContentView(imageView);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (!isFinishing()) {
Intent intent = MainActivity.newIntent(SplashActivity.this);
startActivity(intent);
}
}
}, DELAY_TIME);
}
}
このコードを実行すると、次のように画面全体にデフォルトのアイコンが表示され、5秒後にMainActivityが表示されます。
5秒経過する前にバックキーでアプリを閉じると、次の画面は表示されません。
(ただし、ホームキーでバックグラウンドに回した場合は、やはり次の画面が立ち上がってくるので注意が必要です)
サンプルプロジェクトをGitHubに置いておきます。
https://github.com/keiji/adventcalendar_2015_mincomi
「有山圭二」は「みんなのコミック」及び運営の「株式会社イーブックイニシアティブジャパン」とは一切関係がありません。
また、本アドベントカレンダーの内容はあくまで参加者個人の見解です。
「みんなのコミック」の評価を目的とするものではありませんので、ご了承下さい。
みんコミといえば、僕が普段からお世話になっている根雪れい(@neyuki_rei)さんも連載していますね。
10歳になったおかあさんと僕の生活をマンガにしましたよ~。見てくださいね ! https://t.co/UfxCfaOYRZ #みんコミ #みんなのコミック pic.twitter.com/2nHBnFus4n
— 根雪れい.おかあさん(10)と僕。連載中 (@neyuki_rei)
根雪さんの「おかあさん(10)と僕。」はまだ更新日(毎月第3木曜日)ではないですね。
最新話が第1話の作品は、残すところあと5作品となりました。
それでは明日、16日の担当は年末に発表予定を入れすぎたと心底後悔している「有山圭二」さんです。
よろしくお願いします。