アイコン イチから始める,
iモードJava
プログラミング
 [第20回]

iアプリの割り込み〜再開処理を実装する

iアプリが止まるとき

 言うまでもないことだが,iアプリは携帯電話で動いている。ユーザーはiアプリを,いろいろな目的で使うわけだが,いずれにしても携帯なのだから電話がiアプリより優先されるのは当然だろうと思う。また,急に何かの用事ができて,ユーザーがiアプリを中断しなければならない事態も考慮する必要がある。

 iアプリは,ご存知のように,常にユーザーが特定のキーで強制終了できる。また,携帯に着信すると自動的にiアプリの実行が一時的に止まることになっている。

 強制終了と停止の違いは,前者が2度と再開されないのに対して,後者は着信処理(通話や何か)が終わった時点でJavaの実行が再開されるという点だ。勝手に再開されるので,iアプリ側では取り立てて,何もしなくても構わない。

 ただし,ゲームの場合は少し事情が違ってくる。通話終了後,唐突にゲームが始まってしまうのは具合が悪いからだ。もちろん具合が悪くないと考えるなら何もしなくてもいいが,いちおう「再開しますか?」程度のメッセージは出して,再開するかどうかをユーザーに聞くのが親切というモノだろう。

 そのほか,iアプリのドキュメントに記されているように,ネットワークのセッションを行っている最中に中断した場合は何かしらの事後処理が必要になることもある。

 では,一時停止後の処理は,どのように書いたらいいのだろうか。iアプリのドキュメントに記されているように,一時停止が終わり再開すると,IApplicationのresume()というメソッドが呼び出されるので,そのメソッドをオーバーライドしてやればよい。たとえば,もぐら叩きを例にするのなら次のような具合だ。

public class mogura extends IApplication {
  public void start() {
    MoguraPanel
     mp = new MoguraPanel(this);
    Display.setCurrent(mp);
  }

  // 中断後,再開時に呼び出される
  public void resume() {
    mp.resume();
  }
}

ダイアログボックスを利用する

 こうしておけば,メインパネルにあるresume()メソッドが呼び出される。resume()では,再開時に必要な適当な処理を行った後,ユーザーにiアプリを続けるかどうか聞くというのが一般的な処理になるだろう。もぐら叩きの例では,次のようになる。

public void resume() {
  // モグラを一時的に止める
  for(int i=0; i<9 ; i++ ) {
   mogura[i].pause();
  }
  Dialog dlg = new Dialog(
     Dialog.DIALOG_INFO, "MOGURA" );
  dlg.setText("一時停止中です");
  dlg.show();
  // モグラを再開する
  for(int i=0; i<9 ; i++ ) {
   mogura[i].resume();
  }
}

 上記のプログラムではDialogというユーティリティクラスを利用して一時停止をユーザーに告知した。iアプリのDialogは,ユーザーに情報や警告を知らせるための機能を持っている。WindowsのMessageBoxに近いものと考えていい。

 ここで利用したダイアログボックスタイプ「DIALOG_INFO」は,単純に情報を提供するだけで,OKボタンしか表示されない。Dialogクラスのshow()メソッドを呼び出すと画面にメッセージ文字列(setText()で設定)とOKボタンが表示され,ユーザーがOKボタンを押すとshow()メソッドから戻ってくる。そこで処理を再開させればいいわけだ。

 ユーザーに,止めるという選択肢を与える場合は,DIALOG_YESNOタイプ(YESボタンとNOボタンがある)のダイアログを使うといいだろう。次のようにする。

  Dialog dlg = new Dialog(
     Dialog.DIALOG_YESNO, "MOGURA" );
  dlg.setText("一時停止中です。再開しますか");
  if(dlg.show() == Dialog.BUTTON_NO ) {
    // アプリケーションの終了処理
  }
  // アプリケーションを継続

 さて,次回は,サーバーサイドスクリプト(CGI)とiアプリの連携をテーマに,得点集計サイトの作成に取り掛かる。iアプリとサーバーサイドの処理の連携になるので,やや面倒になるがiアプリらしい処理ともいえるのでトライして欲しい。

[米田聡,ITmedia]

関連記事
▼ 携帯コンテンツ市場を狙うISP──BIGLOBEが課金システム提供
▼ 非公式の携帯Javaに課金──ニフティが課金システムを提供
▼ 携帯向けJava,3社の違いは?
▼ 一般向け「iアプリ」市場は立ち上がるのか?
▼ iモード対応Javaを作るのに必要なものは?──NTTドコモ,仕様をついに公開


連載バックナンバー

▼ 付録 iモードJava開発関連リンク集

▼ 第1回 プログラム作成への準備

▼ 第2回 iアプリ製作の流れ

▼ 第3回 ファーストiアプリケーション

▼ 第4回 i-JADEを使おう

▼ 第5回 preverifyの環境作り

▼ 第6回 iアプリでミニゲーム〜グラフィックの取り扱い

▼ 第7回 読者からの質問コーナー

▼ 第8回 キーボードに合わせてグラフィックを動かす

▼ 第9回 クラスって何だろう?

▼ 番外編 ドコモ,公式iアプリ作成ツールを公開

▼ 第10回 NTTドコモの開発ツールを使ってみよう

▼ 第11回 サウンドを使ってみる

▼ 第12回 読者からの質問コーナー〜2

▼ 第13回 スクラッチパッドへの書き込み

▼ 第14回 ネットからデータをダウンロードする

▼ 第15回 アニメーションGIFを使ってみる

▼ 番外編2 iアプリのセキュリティは破られていない

▼ 第16回 もぐら叩きを作る〜1

▼ 第17回 モグラクラスの動作検証

▼ 第18回 読者からの質問コーナー〜3

▼ 第19回 サウンドを鳴らす

▼ 第20回 iアプリの割り込み〜再開処理を実装する

▼ 第21回 サーバと通信を行ってみる

▼ 第22回 iアプリプログラマのためのezplus入門

▼ 第23回 J-フォンのJava仕様

▼ 第24回 iアプリの達人になるには?

Copyright © ITmedia, Inc. All Rights Reserved.



モバイルショップ

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!