(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6403976
(24)【登録日】2018年9月21日
(45)【発行日】2018年10月10日
(54)【発明の名称】コンピュータプログラム、情報処理装置及び処理実行方法
(51)【国際特許分類】
H04M 11/00 20060101AFI20181001BHJP
G06F 13/00 20060101ALI20181001BHJP
G06F 13/10 20060101ALI20181001BHJP
H04M 1/00 20060101ALI20181001BHJP
【FI】
H04M11/00 302
G06F13/00 353C
G06F13/10 330B
H04M1/00 U
【請求項の数】6
【全頁数】13
(21)【出願番号】特願2014-80125(P2014-80125)
(22)【出願日】2014年4月9日
(65)【公開番号】特開2015-201784(P2015-201784A)
(43)【公開日】2015年11月12日
【審査請求日】2017年3月2日
(73)【特許権者】
【識別番号】000101732
【氏名又は名称】アルパイン株式会社
(74)【代理人】
【識別番号】100099748
【弁理士】
【氏名又は名称】佐藤 克志
(72)【発明者】
【氏名】信田 宗幸
【審査官】
北川 純次
(56)【参考文献】
【文献】
特開2013−240011(JP,A)
【文献】
特開2006−209560(JP,A)
【文献】
特開2014−049812(JP,A)
【文献】
特開2013−118663(JP,A)
【文献】
特開2014−036410(JP,A)
【文献】
特開2014−146996(JP,A)
【文献】
特開2009−182581(JP,A)
【文献】
特開2014−006619(JP,A)
【文献】
特開2014−045287(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04M 11/00
G06F 13/00
G06F 13/10
H04M 1/00
(57)【特許請求の範囲】
【請求項1】
オペレーティングシステムを備えたコンピュータによって読み取られ実行されるコンピュータプログラムであって、
前記コンピュータプログラムは、前記コンピュータを、前記オペレーティングシステム上で稼働するアプリケーションとして機能させ、
前記オペレーティングシステムは、前記アプリケーションの稼働中、当該アプリケーションの実行状態を、フォアグランドで当該アプリケーションが実行されるフォアグランド状態と、バックグランドで当該アプリケーションが実行されるバックグランド状態と、当該アプリケーションの実行が停止されるサスペンデッド状態の間で遷移させながら制御し、
前記アプリケーションは、
実行状態がフォアグランド状態にあるときに、外部装置との間に確立された通信コネクションを用いて処理を行う通信コネクション利用処理部と、
前記通信コネクションの接続中の有無を表す接続状態情報を保存すると共に、フォアグランド状態にあるときとバックグランド状態にあるときとに発生した前記通信コネクションの接続中の有無の状態の変化に応じて、前記接続状態情報を更新する通信コネクション管理部と、
通信コネクション切断部と、
バックグランド状態で継続的な動作を行うか行わないかを選択的に設定する継続動作有無設定部とを有し、
前記アプリケーションの通信コネクション切断部は、
実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行うよう設定されており、かつ、外部装置との間に通信コネクションが接続されている場合には、当該通信コネクションを切断せず、
実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行わないよう設定されており、かつ、外部装置との間に通信コネクションが接続されている場合には、当該通信コネクションを切断することを特徴とするコンピュータプログラム。
【請求項2】
請求項1記載のコンピュータプログラムであって、
前記アプリケーションは、実行状態がフォアグランド状態に遷移したときに、前記接続状態情報が外部装置との間に通信コネクションが接続されていないことを表している場合に、外部装置との間の通信コネクションを接続する通信コネクション接続部を有することを特徴とするコンピュータプログラム。
【請求項3】
外部装置を接続可能な情報処理装置であって、
オペレーティングシステムと、
前記オペレーティングシステム上で稼働するアプリケーションとを備え、
前記オペレーティングシステムは、前記アプリケーションの稼働中、当該アプリケーションの実行状態を、フォアグランドで当該アプリケーションが実行されるフォアグランド状態と、バックグランドで当該アプリケーションが実行されるバックグランド状態と、当該アプリケーションの実行が停止されるサスペンデッド状態の間で遷移させながら制御し、
前記アプリケーションは、
実行状態がフォアグランド状態にあるときに、外部装置との間に確立された通信コネクションを用いて処理を行う通信コネクション利用処理部と、
前記通信コネクションの接続中の有無を表す接続状態情報を保存すると共に、フォアグランド状態にあるときとバックグランド状態にあるときとに発生した前記通信コネクションの接続中の有無の状態の変化に応じて、前記接続状態情報を更新する通信コネクション管理部と、
通信コネクション切断部と、
バックグランド状態で継続的な動作を行うか行わないかを選択的に設定する継続動作有無設定部とを有し、
前記アプリケーションの通信コネクション切断部は、
実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行うよう設定されており、かつ、外部装置との間に通信コネクションが接続されている場合には、当該通信コネクションを切断せず、
実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行わないよう設定されており、かつ、外部装置との間に通信コネクションが接続されている場合には、当該通信コネクションを切断することを特徴とする情報処理装置。
【請求項4】
請求項3記載の情報処理装置であって、
前記アプリケーションは、実行状態がフォアグランド状態に遷移したときに、前記接続状態情報が外部装置との間に通信コネクションが接続されていないことを表している場合に、外部装置との間の通信コネクションを接続する通信コネクション接続部を有することを特徴とする情報処理装置。
【請求項5】
コンピュータのオペレーティングシステム上で稼働するアプリケーションが行う処理実行方法であって、
前記オペレーティングシステムは、前記アプリケーションの稼働中、当該アプリケーションの実行状態を、フォアグランドで当該アプリケーションが実行されるフォアグランド状態と、バックグランドで当該アプリケーションが実行されるバックグランド状態と、当該アプリケーションの実行が停止されるサスペンデッド状態の間で遷移させながら制御し、
当該処理実行方法は、
実行状態がフォアグランド状態にあるときに、外部装置との間に確立された通信コネクションを用いて処理を行う通信コネクション利用処理ステップと、
前記通信コネクションの接続中の有無を表す接続状態情報を保存すると共に、フォアグランド状態にあるときとバックグランド状態にあるときとに発生した前記通信コネクションの接続中の有無の状態の変化に応じて、前記接続状態情報を更新する接続状態情報管理ステップと、
通信コネクション切断ステップと、
バックグランド状態で継続的な動作を行うか行わないかを選択的に設定するステップとを有し、
前記通信コネクション切断ステップは、
実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行うよう設定されており、かつ、外部装置との間に通信コネクションが接続されている場合には、当該通信コネクションを切断せず、
実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行わないよう設定されており、かつ、外部装置との間に通信コネクションが接続されている場合には、当該通信コネクションを切断するステップであることを特徴とする処理実行方法。
【請求項6】
請求項5記載の処理実行方法であって、
実行状態がフォアグランド状態に遷移したときに、前記接続状態情報が外部装置との間に通信コネクションが接続されていないことを表している場合に、外部装置との間の通信コネクションを接続する通信コネクション接続ステップを有することを特徴とする処理実行方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モバイルコンピュータで実行されるアプリケーションにおいて外部装置との通信状態を管理する技術に関するものである。
【背景技術】
【0002】
マルチタスク機能を備えたモバイルコンピュータのオペレーティングシステムとしては、アプリケーションの実行状態をフォアグランド状態とバックグランド状態とサスペンデッド状態との間で遷移させながら、複数のアプリケーションを動作させるオペレーティングシステムが知られている(たとえば、特許文献1)。
【0003】
ここで、フォアグランド状態とは、アプリケーションが、ウインドウの表示やユーザ操作の受け付けなどユーザインタフェースを提供しながら処理を行える形態で実行されている状態であり、バックグランド状態とはユーザインタフェースを提供できない形態でアプリケーションが実行されている状態であり、サスペンデッド状態とは、アプリケーションがロードされてはいるものの、そのコードの実行が停止されている状態である。
【0004】
ここで、フォアグランド状態で実行されるアプリケーションは一つに制限されており、オペレーティングシステムによって各アプリケーションの実行状態をたとえば次のように制御される。
【0005】
すなわち、ユーザ操作等に応じて、オペレーティングシステムは、フォアグランド状態とするアプリケーションを切り替える。また、オペレーティングシステムは、フォアグランド状態とするアプリケーションを切り替えるときに、それまでフォアグランド状態で実行されていたアプリケーションの実行状態を、バックグランド状態に遷移する。また、オペレーティングシステムは、バックグランド状態で継続した処理を行わないアプリケーションについては、バックグランド状態に遷移させた後、所定期間経過後などの所定の契機で、その実行状態をサスペンデッド状態に遷移する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006-209560号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
さて、上述のようにアプリケーションの実行状態をフォアグランド状態とバックグランド状態とサスペンデッド状態との間で遷移させるオペレーティングシステム上で実行されるアプリケーションが、フォアグランド状態において、外部装置との間に接続した通信コネクションを用いて処理を行うものである場合、次のような問題が生じる場合がある。
【0008】
すなわち、フォアグランド状態で外部装置との間に接続した通信コネクションを用いて処理を行っていたアプリケーションは、フォアグランド状態からバックグランド状態に遷移した後も、通信コネクションの接続状態は維持されるので、そのまま当該通信コネクションの接続状態を接続中として管理する。
【0009】
そして、その後、アプリケーションがバックグランド状態からサスペンデッド状態に遷移すると、当該アプリケーションはサスペンデッド状態では実行を停止するために、サスペンデッド状態である期間中に当該アプリケーションが管理している当該通信コネクションの接続状態が接続中のまま凍結されることとなる。
【0010】
一方で、アプリケーションがバックグランド状態からサスペンデッド状態に遷移すると、当該アプリケーションが実質的に非動作状態となったことや、当該アプリケーションが外部装置に対して非動作状態となったこと等に起因して、外部装置やオペレーティングシステムによって当該アプリケーションが使用していた通信コネクションが切断される場合がある。
【0011】
そして、このような場合、アプリケーションがサスペンデッド状態からバックグランド状態やフォアグランド状態に遷移した直後に、通信コネクションが切断されているにも関わらずに、アプリケーションが通信コネクションの接続状態を接続中として認識する不整合が生じることとなり、当該不整合によってアプリケーションの誤動作が生じることがある。
【0012】
そこで、本発明は、フォアグランド状態とバックグランド状態とサスペンデッド状態との間で遷移する、フォアグランド状態において外部装置との間の通信コネクションを用いて処理を行うアプリケーションにおいて、通信コネクションの接続状態の管理を適正に行えるようにすることを課題とする。
【課題を解決するための手段】
【0013】
前記課題達成のために、本発明は、オペレーティングシステムを備えたコンピュータによって読み取られ実行され、前記コンピュータを、前記オペレーティングシステム上で稼働するアプリケーションとして機能させるコンピュータプログラムを提供する。ただし、前記オペレーティングシステムは、前記アプリケーションの稼働中、当該アプリケーションの実行状態を、フォアグランドで当該アプリケーションが実行されるフォアグランド状態と、バックグランドで当該アプリケーションが実行されるバックグランド状態と、当該アプリケーションの実行が停止されるサスペンデッド状態の間で遷移させながら制御するものである。また、前記アプリケーションは、実行状態がフォアグランド状態にあるときに、外部装置との間に確立された通信コネクションを用いて処理を行う通信コネクション利用処理部と、前記通信コネクションの接続中の有無を表す接続状態情報を保存すると共に、フォアグランド状態にあるときとバックグランド状態にあるときとに発生した前記通信コネクションの接続中の有無の状態の変化に応じて、前記接続状態情報を更新する通信コネクション管理部と、実行状態がバックグランド状態に遷移したときに、外部装置との間に通信コネクションが接続されている場合に当該通信コネクションを切断する通信コネクション切断部とを備えたものである。
【0014】
このようなコンピュータプログラムによるアプリケーションによれば、アプリケーションがバックグランド状態に遷移すると、アプリケーションがサスペンデッド状態に遷移する前に外部装置との間の通信コネクションは必ず切断され、接続状態情報が表す通信コネクションの状態は非接続中に更新される。また、アプリケーションがサスペンデッド状態に遷移するときには、既に通信コネクションは切断されているので、当該サスペンデッド状態の期間中に、当該アプリケーションと外部装置との間の通信コネクションの状態の変更が行われることもない。
【0015】
よって、サスペンデッド状態からフォアグランド状態に復帰したときに、接続状態情報で管理している通信コネクションの状態と、現実の通信コネクションの状態との間に不整合が生じることが抑止される。
【0016】
ここで、このようなコンピュータプログラムは、前記アプリケーションに、バックグランド状態で継続的な動作を行うか行わないかが選択的に設定する継続動作有無設定部を備え、前記アプリケーションの通信コネクション切断部において、実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行うよう設定されている場合には、外部装置との間に通信コネクションが接続されている場合であっても当該通信コネクションを切断せず、実行状態がバックグランド状態に遷移したときに、当該アプリケーションがバックグランド状態で継続的な動作を行わないよう設定されており、かつ、外部装置との間に通信コネクションが接続されている場合にのみ当該通信コネクションを切断するように構成してもよい。
【0017】
このようにすることにより、アプリケーションがバックグランド状態で継続的な動作を行わないために、アプリケーションがサスペンデッド状態に遷移する可能性がある場合、すなわち、外部装置との間の通信コネクションを切断しないと、接続状態情報で管理している通信コネクションの状態と現実の通信コネクションの状態との間に不整合が生じる可能性がある場合のみ、外部装置との間の通信コネクションを切断することができる。
【0018】
また、このようなコンピュータプログラムにおいて、前記アプリケーションは、実行状態がフォアグランド状態に遷移したときに、前記接続状態情報が外部装置との間に通信コネクションが接続されていないことを表している場合に、外部装置との間の通信コネクションを接続する通信コネクション接続部を備えていてもよい。
【0019】
ここで、前記課題達成のために、本発明は、以上のようなコンピュータプログラムによるアプリケーションを備えた情報処理装置や、以上のようなコンピュータプログラムによるアプリケーションの処理実行方法も併せて提供する。
【発明の効果】
【0020】
以上のように、本発明によれば、フォアグランド状態とバックグランド状態とサスペンデッド状態との間で遷移する、フォアグランド状態において外部装置との間の通信コネクションを用いて処理を行うアプリケーションにおいて、通信コネクションの接続状態の管理を適正に行えるようになる。
【図面の簡単な説明】
【0021】
【
図1】本発明の実施形態に係るモバイル装置の構成を示すブロック図である。
【
図2】本発明の実施形態に係るアプリケーションの状態遷移例を示す図である。
【
図3】本発明の実施形態に係るバックグランド移行準備処理を示すフローチャートである。
【
図4】本発明の実施形態に係るアプリケーションの動作例を示す図である。
【
図5】本発明の実施形態に係るバックグランド移行準備処理の他の例を示すフローチャートである。
【発明を実施するための形態】
【0022】
以下、本発明の実施形態について説明する。
図1に本実施形態に係るモバイル装置の構成を示す。
図示するように、モバイル装置1は入力装置101、表示装置102、マイクやスピーカなどを備えた音声入出力装置103、外部のアクセサリ装置2を接続可能な外部インタフェース104、オペレーティングシステム105、外部記憶装置として機能する記憶装置106、主記憶装置として機能するメモリ107、移動通信網に接続するための移動通信装置108、その他の周辺装置109、オペレーティングシステム105上で稼働する各種のアプリケーション110とを備えている。
【0023】
ここで、外部インタフェース104は、USBなどの有線通信インタフェースや、Bluetooth(登録商標)やWi-Fi(IEE802.11シリーズ)などの無線通信インタフェースで外部のアクセサリ装置2と接続するインタフェース装置である。
【0024】
また、モバイル装置1は、上述したアプリケーション110として、移動通信装置108や音声入出力装置103や入力装置103を用いた移動電話機能を提供する移動電話アプリケーションや、外部インタフェース104に接続されたアクセサリ装置2をリモート制御するためのリモート制御アプリケーションなどを備えている。
【0025】
なお、モバイル装置1は、スマートフォンやタブレット装置などの携帯型の装置である。また、モバイル装置1は、ハードウエア的には、CPUやメモリ107などを備えたコンピュータを用いて構成されるものあり、オペレーティングシステム105や、アプリケーション110などは、当該コンピュータが、所定のコンピュータプログラムを実行することにより実現されるものである。また、アプリケーション110の実行は、オペレーティングシステム105の制御下で、記憶装置106に記憶された当該アプリケーション110のコンピュータプログラムをメモリ107にロードして実行することにより実現される。
【0026】
次に、このようなモバイル装置1におけるオペレーティングシステム105のアプリケーション110の実行の制御について説明する。
オペレーティングシステム105は、マルチタスキングによって複数のアプリケーション110の実行を制御するオペレーティングシステム105であり、アプリケーション110を非動作状態、フォアグランド状態とバックグランド状態とサスペンデッド状態との間で遷移させながら、複数のアプリケーション110の実行を制御する。
【0027】
ここで、非動作状態とはアプリケーション110が起動されていない状態であり非動作状態においてアプリケーション110はメモリ107にロードされていない。また、フォアグランド状態とは、メモリ107にロードされたアプリケーション110が、ウインドウの表示やユーザ操作の受け付けなどのユーザインタフェースを提供しながら処理を行える形態で実行されている状態であり、バックグランド状態とは、メモリ107にロードされたアプリケーション110がユーザインタフェースを提供できない形態で実行されている状態であり、サスペンデッド状態とは、アプリケーション110がメモリ107にロードされてはいるものの、そのコードの実行が停止されている状態である。
【0028】
ここで、フォアグランド状態で実行されるアプリケーション110は一つに制限されており、オペレーティングシステム105によって各アプリケーション110の実行状態をたとえば次のように制御される。
【0029】
すなわち、
図2に示すように、非動作状態のアプリケーション110をユーザが起動すると、当該アプリケーション110は非動作状態からフォアグランド状態に遷移し動作を開始する。
【0030】
そして、ユーザ操作等に応じて、オペレーティングシステム105が、フォアグランド状態とするアプリケーション110を他のアプリケーション110に切り替えるときや、モバイル装置1をスリープ状態に制御するときには、それまでフォアグランド状態で実行されていたアプリケーション110の実行状態はオペレーティングシステム105によってバックグランド状態に遷移させられる。
【0031】
そして、オペレーティングシステム105は、バックグランド状態で継続した処理を行わないアプリケーション110については、バックグランド状態に遷移させた後、所定期間経過後などの所定の契機で実行状態をサスペンデッド状態に遷移する。一方、オペレーティングシステム105は、バックグランド状態で継続した処理を行わないアプリケーション110については、サスペンデッド状態への遷移は行わない。
【0032】
また、オペレーティングシステム105は、モバイル装置1のメモリ107などのリソースが不足した場合には、サスペンデッド状態に遷移したアプリケーション110を非動作状態とし、アプリケーション110が使用していたメモリ107などのリソースを解放する。
【0033】
一方、オペレーティングシステム105は、ユーザ操作等により、サスペンデッド状態にあるアプリケーション110のフォアグランド状態化の要求が発生すると、サスペンデッド状態にあるアプリケーション110をバックグランド状態とした後にフォアグランド状態化する。ただし、オペレーティングシステム105は、ユーザ操作等により、サスペンデッド状態にあるアプリケーション110のフォアグランド状態化の要求が発生すると、サスペンデッド状態にあるアプリケーション110を、直接、フォアグランド状態化するものであってもよい。
【0034】
また、オペレーティングシステム105は、バックグランド状態で継続した処理を行うアプリケーション110については、バックグランド状態に遷移させた後、サスペンデッド状態には遷移させずにバックグランド状態を維持し、ユーザ操作等により、バックグランド状態にあるアプリケーション110のフォアグランド状態化の要求が発生すると、バックグランド状態にあるアプリケーション110をフォアグランド状態に復帰する。
【0035】
以下、このようなモバイル装置1において、フォアグランド状態において外部インタフェース104に接続されたアクセサリ装置2との間に接続された通信コネクションを用いて処理を行うと共に、バックグランド状態で継続した処理を行わないアプリケーション110が、バックグランド状態に遷移したときに行うバックグランド移行準備処理について説明する。
【0036】
ここで、このバックグランド移行準備処理は、オペレーティングシステム105がバックグランド状態に遷移したアプリケーション110に発行するバックグランド遷移通知を受信したときに、アプリケーション110が行う処理である。より具体的には、バックグランド遷移通知により呼び出されるアプリケーション110のメソッドにより、このバックグランド移行準備処理が実行される。
【0037】
図3に、バックグランド状態で継続した処理を行わないアプリケーション110が行うバックグランド移行準備処理の手順を示す。
図示するように、この処理では、まず、アプリケーション110とアクセサリ装置2との間の通信コネクションが接続中であるかどうかを調べる(ステップ302)。
そして、アクセサリ装置2と通信コネクションが接続中でなければ、アプリケーション110の各種設定、状態の保存、使用していないメモリ領域の解放などの、バックグランド状態への移行の準備処処理を行って(ステップ306)、処理を終了する。
【0038】
一方、アクセサリ装置2と通信コネクションが接続中である場合には(ステップ302)、まず、オペレーティングシステム105を介して、アクセサリ装置2と通信コネクションを切断する(ステップ304)。そして、アプリケーション110の各種設定や状態の保存、使用していないメモリ領域の解放などの、その他のバックグランド状態への移行の準備処処理を行って(ステップ306)、処理を終了する。
【0039】
以上、アプリケーション110が行うバックグランド移行準備処理について説明した。
以下、このようなバックグランド移行準備処理を行うアプリケーション110の動作例を
図4を用いて説明する。
図示するように、ユーザが非動作状態(401)のアプリケーション110の起動を指示すると、オペレーティングシステム105によって、当該アプリケーション110は起動されフォアグランド状態(402)に遷移する(411)。また、オペレーティングシステム105からアプリケーション110に起動通知(412)が発行される。
【0040】
次に、フォアグランド状態(402)に遷移し、起動通知(412)を受け取ったアプリケーション110は、接続状態情報として管理している通信コネクションの状態の初期値は切断中状態であるので、オペレーティングシステム105を介してアクセサリ装置2との間の通信コネクションを確立する処理を行い(431)、通信コネクションが確立したならば、接続状態情報として管理している通信コネクションの状態を接続中状態とすると共に、当該通信コネクションを介したアクセサリ装置2との通信を利用した所定の処理を開始する。
【0041】
なお、アクセサリ装置2とアプリケーション110との間の通信コネクションの確立は、アプリケーション110のフォアグランド状態の遷移時に、オペレーティングシステム105とアクセサリ装置2によって起動され行われるものとしてもよい。すなわち、たとえば、アプリケーション110がフォアグランド状態に遷移したときに、オペレーティングシステム105からアクセサリ装置2にアプリケーション110の起動を通知し、起動を通知されたアクセサリ装置2がアプリケーション110との間の通信コネクションを確立する処理をオペレーティングシステム105やアプリケーション110との間で行って通信コネクションを確立するようにしてもよい。
【0042】
そして、その後、ユーザ操作等に応じて、オペレーティングシステム105が、フォアグランド状態とするアプリケーション110を他のアプリケーション110に切り替えるときや、モバイル装置1をスリープ状態に制御するときには、まず、オペレーティングシステム105によって、フォアグランド状態(402)にあるアプリケーション110に、バックグランド遷移予告(413)が通知される。
【0043】
そして、その後、オペレーティングシステム105は、アプリケーション110をバックグランド状態(403)に遷移し(414)、アプリケーション110にバックグランド遷移通知(415)を発行する。
【0044】
ここで、このバックグランド遷移通知(415)を受け取ったアプリケーション110は上述のようにバックグランド移行準備処理を実行し、当該時点で管理している通信コネクションの状態が接続中状態であるので、オペレーティングシステム105を介してアクセサリ装置2との間に確立されている通信コネクションを切断し(432)、接続状態情報として管理している通信コネクションの状態を切断中状態とする。
【0045】
そして、その後、オペレーティングシステム105は、所定期間経過後などの所定の契機でアプリケーション110をサスペンデッド状態(404)に遷移する(416)。ここで、アプリケーション110は、サスペンデッド状態(404)への遷移に先だって、アプリケーション110にサスペンデッド状態への予告を発行することはない。
【0046】
そして、アプリケーション110がサスペンデッド状態(404)にあるときに、ユーザ操作等によりアプリケーション110のフォアグランド状態化の要求が発生すると、オペレーティングシステム105は、サスペンデッド状態(404)にあるアプリケーション110をバックグランド状態(405)に遷移させ(417)、アプリケーション110にバックグランド起動通知(418)を発行する。
【0047】
そして、オペレーティングシステム105は、バックグランド状態(405)にあるアプリケーション110に、フォアグランド遷移予告(419)を通知した後に、アプリケーション110をフォアグランド状態(406)に遷移させ(420)、フォアグランド遷移通知(421)をアプリケーション110に通知する。
【0048】
フォアグランド状態(406)に遷移し、フォアグランド遷移通知(421)を受け取ったアプリケーション110は、当該時点で管理している通信コネクションの状態が切断中状態であるので、上述のように、オペレーティングシステム105を介してアクセサリ装置2との間の通信コネクションを確立する処理を行い(432)、通信コネクションが確立したならば、接続状態情報として管理している通信コネクションの状態を接続中状態とすると共に、当該通信コネクションを介したアクセサリ装置2との通信を利用した所定の処理を開始する。
【0049】
なお、アプリケーション110は、バックグランド遷移通知以外の、オペレーティングシステム105からの上述した各種通知を受け取ったときにも、通知に応じた所定の処理を行う。より具体的には、当該通知によってオペレーティングシステム105が呼び出したアプリケーション110のメソッドに定義されている処理を行う。
【0050】
以上、本発明の実施形態について説明した。
以上のように本実施形態によれば、アプリケーション110がバックグランド状態に遷移すると、アプリケーション110がサスペンデッド状態に遷移する前にアクセサリ装置2との間の通信コネクションは必ず切断され、接続状態情報が表す通信コネクションの状態は非接続中に更新される。また、アプリケーション110がサスペンデッド状態に遷移するときには、既に通信コネクションは切断されているので、当該サスペンデッド状態の期間中に、当該アプリケーション110とアクセサリ装置2との間の通信コネクションの状態の変更が行われることもない。
【0051】
よって、サスペンデッド状態からフォアグランド状態に復帰したときに、接続状態情報で管理している通信コネクションの状態と、現実の通信コネクションの状態との間に不整合が生じることが抑止される。
【0052】
なお、以上の実施形態は、フォアグランド状態での動作状態やユーザの設定等に応じて、バックグランド状態で継続した処理を行うか行わないかが選択的に設定されるアプリケーション110においては、バックグランド移行準備処理を
図5に示すように行うようにしてもよい。なお、オペレーティングシステム105は、バックグランド状態で継続した処理を行うアプリケーション110については、その実行状態は、バックグランド状態からサスペンデッド状態に遷移しない。また、オペレーティングシステム105におけるバックグランド状態で継続した処理を行うアプリケーション110の識別は、たとえば、アプリケーション110からオペレーティングシステム105に、バックグランド状態で継続した処理を行うアプリケーション110が、バックグランド状態で継続した処理を行うアプリケーション110である旨を宣言すること等より行うことができる。
【0053】
さて、
図5に示したバックグランド移行準備処理では、まず、アプリケーション110はバックグランド状態で継続した処理を行うよう設定されているかどうかを調べる(ステップ502)。
【0054】
そして、バックグランド状態で継続した処理を行うよう設定されている場合には(ステップ502)、アプリケーション110の各種設定や状態の保存、使用していないメモリ領域の解放などの、バックグランド状態への移行の準備処処理を行って(ステップ508)、処理を終了する。
【0055】
一方、バックグランド状態で継続した処理を行うよう設定されていない場合には(ステップ502)、次に、アクセサリ装置2と通信コネクションが接続中であるかどうかを調べる(ステップ504)。
【0056】
そして、アクセサリ装置2と通信コネクションが接続中でなければ(ステップ504)、アプリケーション110の各種設定や状態の保存、使用していないメモリ領域の解放などの、バックグランド状態への移行の準備処処理を行って(ステップ508)、処理を終了する。
【0057】
一方、アクセサリ装置2と通信コネクションが接続中である場合には(ステップ504)、まず、オペレーティングシステム105を介して、アクセサリ装置2と通信コネクションを切断する(ステップ506)。そして、アプリケーション110の各種設定や状態の保存、使用していないメモリ領域の解放などの、その他のバックグランド状態への移行の準備処処理を行って(ステップ508)、処理を終了する。
【0058】
図5のようにバックグランド移行準備処理を行うことにより、アプリケーション110がバックグランド状態で継続的な動作を行わないために、アプリケーション110がサスペンデッド状態に遷移する可能性がある場合、すなわち、アクセサリ装置2との間の通信コネクションを切断しないと、接続状態情報で管理している通信コネクションの状態と現実の通信コネクションの状態との間に不整合が生じる可能性がある場合のみ、外部装置との間の通信コネクションを切断するようにすることができる。
【符号の説明】
【0059】
1…モバイル装置、2…アクセサリ装置、101…入力装置、102…表示装置、103…音声入出力装置、104…外部インタフェース、105…オペレーティングシステム、106…記憶装置、107…メモリ、108…移動通信装置、109…周辺装置、110…アプリケーション。