iアプリの割り込み〜再開処理を実装するiアプリが止まるとき言うまでもないことだが,iアプリは携帯電話で動いている。ユーザーはiアプリを,いろいろな目的で使うわけだが,いずれにしても携帯なのだから電話がiアプリより優先されるのは当然だろうと思う。また,急に何かの用事ができて,ユーザーがiアプリを中断しなければならない事態も考慮する必要がある。 iアプリは,ご存知のように,常にユーザーが特定のキーで強制終了できる。また,携帯に着信すると自動的にiアプリの実行が一時的に止まることになっている。 強制終了と停止の違いは,前者が2度と再開されないのに対して,後者は着信処理(通話や何か)が終わった時点でJavaの実行が再開されるという点だ。勝手に再開されるので,iアプリ側では取り立てて,何もしなくても構わない。 ただし,ゲームの場合は少し事情が違ってくる。通話終了後,唐突にゲームが始まってしまうのは具合が悪いからだ。もちろん具合が悪くないと考えるなら何もしなくてもいいが,いちおう「再開しますか?」程度のメッセージは出して,再開するかどうかをユーザーに聞くのが親切というモノだろう。 そのほか,iアプリのドキュメントに記されているように,ネットワークのセッションを行っている最中に中断した場合は何かしらの事後処理が必要になることもある。 では,一時停止後の処理は,どのように書いたらいいのだろうか。iアプリのドキュメントに記されているように,一時停止が終わり再開すると,IApplicationのresume()というメソッドが呼び出されるので,そのメソッドをオーバーライドしてやればよい。たとえば,もぐら叩きを例にするのなら次のような具合だ。 public class mogura extends IApplication { // 中断後,再開時に呼び出される ダイアログボックスを利用するこうしておけば,メインパネルにあるresume()メソッドが呼び出される。resume()では,再開時に必要な適当な処理を行った後,ユーザーにiアプリを続けるかどうか聞くというのが一般的な処理になるだろう。もぐら叩きの例では,次のようになる。 public void resume() { 上記のプログラムではDialogというユーティリティクラスを利用して一時停止をユーザーに告知した。iアプリのDialogは,ユーザーに情報や警告を知らせるための機能を持っている。WindowsのMessageBoxに近いものと考えていい。 ここで利用したダイアログボックスタイプ「DIALOG_INFO」は,単純に情報を提供するだけで,OKボタンしか表示されない。Dialogクラスのshow()メソッドを呼び出すと画面にメッセージ文字列(setText()で設定)とOKボタンが表示され,ユーザーがOKボタンを押すとshow()メソッドから戻ってくる。そこで処理を再開させればいいわけだ。 ユーザーに,止めるという選択肢を与える場合は,DIALOG_YESNOタイプ(YESボタンとNOボタンがある)のダイアログを使うといいだろう。次のようにする。 Dialog dlg = new Dialog( さて,次回は,サーバーサイドスクリプト(CGI)とiアプリの連携をテーマに,得点集計サイトの作成に取り掛かる。iアプリとサーバーサイドの処理の連携になるので,やや面倒になるがiアプリらしい処理ともいえるのでトライして欲しい。 [米田聡,ITmedia] 関連記事 連載バックナンバー Copyright © ITmedia, Inc. All Rights Reserved. モバイルショップ
最新スペック搭載ゲームパソコン
最新CPU搭載パソコンはドスパラで!!
FEED BACK |