以下に、本発明を携帯電話機に適用した場合における一つの実施の形態を、図面を用いて説明する。図1、図2は携帯電話機1の外観を示した図であり、また図4は携帯電話機1のブロック図を示したものである。
まず、携帯電話機1の構造を図1、図2を用いて説明する。図1は、携帯電話機1を約180度開いた時の外観図である。図1(A)は正面から見た図、図1(B)は側面から見た図である。
次に、図2は携帯電話機1を閉じた時の図である。図2(A)は正面から見た図、図2(B)は側面から見た図である。
携帯電話機1は上筐体部2と下筐体部4がヒンジ部3を介して接続されており、上筐体部2にはLCDなどのディスプレイ5、受信した音声を発声するレシーバ9、携帯電話機1の状態を検知するための磁気センサ11a、カメラ12、及びサブ表示部13を有している。また、下筐体部4には、数字、文字、携帯電話機1の操作等を入力するためのキー6、更には携帯電話機1の操作を行うサイドキー7a乃至7c、集音するためのマイク(送話口)8、及び携帯電話機1の状態を検知するための磁気センサ11bを有している。
図4は、携帯電話機1の構成を簡潔に示したブロック図である。携帯電話機1の内部には、携帯電話機1全体の制御を行う制御部101と、例えばRAM・NANDメモリ・DRAM・SRAMなどのメモリなどで構成され、各種の情報データなどが保存されているメモリ115と、ディスプレイ5を表示制御する第1表示制御部105・サブ表示部13を表示制御する第2表示制御部113と、キー6及びサイドキー7の押下を認識する入力部106と、アンテナ117を用いて無線通信制御を行う通信部118と、制御部101が実行する待受タスク群116a、第1タスク群116b、第2タスク群116c、・・・第Nタスク群116nとを備えている。また、制御部101によって全体が制御されており、待受タスク群116a、第1タスク群116b、第2タスク群116c、・・・、及び第Nタスク群116nを管理したり、実行を指示したりするタスク管理・実行制御部101aからなる。
第1表示制御部105・第2表示制御部113は、それぞれディスプレイ5及びサブ表示部13を表示制御するものであり、制御部101から出力命令される表示データを表示制御する。
通信部118は、制御部101によって命令された情報を、無線通信によって送信したり、メールサーバより無線通信によって送られた情報を受信したりする機能を有する。また、電話機能による通話の際も、通信部118を通じて基地局からの信号を受信することにより、着信を通知したり、通話が行われたりする。そして、これらのメール受信信号や、着信信号を受信すると、制御部101にその旨を伝える。
入力部106は、キー6及びサイドキー7の押下を認識するものであって、数字キーや文字キー、メール編集の決定・中止などのファンクションキーを含む複数のキーの押下を
それぞれ認識することができ、利用者が入力操作したキー6の入力に応じて、キーを識別する識別信号を制御部101へ通知し、制御部101がその動作を開始する。
図3は、本発明のディスプレイ5の表示例、およびキー6の配置の一例を示した図であり、図3(A)はディスプレイ5の表示例、図3(B)はキー6の配置の一例である。図3(A)に示されるように、携帯電話機1のディスプレイ5には、一番上の行(以下上ピクト行とする)には、現在のアンテナ117の感度のレベルを示したアンテナピクト51と、携帯電話機1の現在の電池残量を示した電池ピクト52と、現在の時刻を表示する時刻表示53とメールを受信した際に表示されるメールピクト57とが表示されている。さらに、携帯電話機1のディスプレイ5の一番下の行(以下下ピクト行とする)には、現在表示されている機能において、ソフトキー左64・ソフトキー中65・ソフトキー右66を押下すると実行される機能の簡単な説明が、それぞれソフトキー左64については左下ピクト54、ソフトキー中65については中下ピクト55、ソフトキー右66については右下ピクト56になされている。たとえば、図3(A)のような表示がなされている場合、ソフトキー左64を押下すると、「戻る」という機能が実行され、ソフトキー中65を押下すると、図示していないが、現在フォーカスが当たっている機能を選択することができる。また、ソフトキー右66を押下すると、「サブメニュー」が表示される。なお、ソフトキー中65の操作は十字キー67の真ん中にある決定キーにおいても行うことができる。
図3(B)に示されるように、下筐体4には、キー6として、数字キー61、「*」キー62、「#」キー63、ソフトキー左64、ソフトキー中65、ソフトキー右66、十字キー67、メールキー68、ブラウザキー69、通話キー70、電源キー71、及びクリアキー72を有する。数字キー61は、数字のほかに、かな文字、記号文字、アルファベット等が割り当てられており、例えば、「1」のキーには、数字「1」、「あ」「い」「う」「え」「お」のかな文字、及び「.」「@」の記号が割り当てられており、「2」のキーには、数字「2」、「か」「き」「く」「け」「こ」のかな文字、及び「A」「B」「C」「a」「b」「c」などのアルファベットが割り当てられている。
十字キー67は、当てられたカーソルを上下左右方向に移動することができることに加え、真ん中にある部分(以下決定キーと呼ぶ)を押下すると、さまざまな機能を確定することができる。また、メールキー68はメールの送受信機能を呼び出すことができる。また、ブラウザキーは、Webなどに接続することができる。
通話キー70は、電話を受ける際や、発信する際に用いるためのキーであり、電源キー71は、電源のON・OFF、終話の際、及び機能、編集を終了する際に用いる。更に、クリアキー72は、機能・編集をクリアする際、及び文字入力の際に文字を消去する際に用いる。また、クリアキー72は待ち受け画面において押下すると、メモ帳を呼び出すことができる。
次に、この明細書で用いる用語について説明する。まず、「サービス(SVと記すこともある)」とは、携帯電話機1において、携帯電話機1のユーザがキー6によって操作することができるソフトウェアの機能のことを指す。このソフトウェアの機能とは、電話帳機能・メニュー呼出・メール機能・アラーム機能・ブラウザ機能・スケジュール機能・ショートカット機能・音楽再生機能・TV電話機能・TV視聴機能・地上波デジタルTV機能・無線LAN接続機能・外部機器接続機能など広い意味を含むだけでなく、電話帳の一覧表示機能・電話帳の新規作成機能・電話帳の消去機能といったように狭い意味(広く電話帳機能を呼び出し、その下位の階層で実行できる機能も含むという意味)も含むものとする。また、通信待受・電源ON/OFF等もこのサービスの概念に含まれるものとする。それらのサービスの詳細説明は、周知のものであるため、説明を省略する。なお、これらのサービスは、待受タスク群116a、第1タスク群116b、・・・第Nタスク群によって実現される。
また、「タスク」とは、携帯電話機1のOS上で定義されたタスクで、アプリケーション層に位置するものを示す。
また、「サービスタスク」とは、サービスを提供するためのタスク群(例えば本実施例で言えば待受タスク群116a、第1タスク群116b、第2タスク群116c、・・・第Nタスク群116nに該当する)の中で、起動して管理タスクの制御メッセージを受けて、サービスの実行を司るタスクを指す。
また、「フォアグランド(フォアグラウンドサービス)」とは、携帯電話機1の全体の動作を主に制御できる権限を持った状態でサービスを起動することであって、原則として、画面を表示する権限や、キー入力を受け付ける権限をもつ。また、「バックグラウンド(バックグラウンドサービス)」とは、フォアグラウンドより低い権限で制限を受け他状態で動作するサービスであって、動作することは許可されているが、携帯電話機1の画面を表示する権限や、キー入力を受け付ける権限などは、フォアグラウンドのほうが優先されるように制御される。
また、「中断(中断サービス)」とは、あるサービスを起動している間に、その動作を中断することを指し、タスク管理・実行制御部101aより再開指示を受けると、フォアグラウンドとなる。
また、「アイドル」とは、タスクとして起動されて初期化されているが、サービスとして起動されていない状態を指す。
また、「強連携」とは、新たに起動するサービス(SV−A)とその直前に起動していたサービス(SV−B)とが直接強い結びつきがある場合であって、SV−BがSV−Aからの情報の返りを期待する場合を指す。
また、「弱連携」とは、新たに起動するサービス(SV−C)とその直前に起動していたサービス(SV−B)とが直接にはあまり結びつきがない場合であって、SV−BがSV−Cからの情報の返りを期待しない場合を指す。
また、「サービスチェーン」とは、一度に連携して動作するサービスを、順次つないで管理しているチェーンを指す。このチェーンの情報は、タスク管理・実行制御部101a(後に説明するチェーン管理部151、図6)に記憶する。
また、「ルート」とは、サービスチェーンの基点を示す概念を示す。
次に、図5を用いて、待受タスク群116a、第1タスク群116b、第2タスク群116c、・・・第Nタスク群116nが起動して、遷移する状態の関係について説明する。それぞれのタスク群は、タスク管理・実行制御部101aによって制御されている。
まず、サービス(例えば第Nタスク群116n)は、例えばユーザの電源キー71の長押し操作による電源ON操作によって未起動状態21からアイドル状態22に遷移する(S211)。そして、例えばユーザの電源キー71の長押し操作による電源OFF操作によってアイドル状態22から未起動状態21へ遷移する(S223)。
また、タスク管理・実行制御部101aは、外部からの音声着信、または第Mタスク群116mのサービス起動要求(ユーザのキー6の操作による場合とそれ以外の場合も含む)がなされると、対応するサービス(例えば第Nタスク群116n)を起動するように制御されるが、サービスはそれを受けて、フォアグラウンド(S221)または、バックグラウンド(S222)の状態として起動する。フォアグラウンドで起動するか、バックグラウンドで起動するかは、後述するルールでタスク管理・実行制御部101aによって決定され、制御される。
また、サービスがフォアグラウンド状態23であった場合には、サービスが終了した場合(起動している必要がなくなった場合)、または、サービスを強制的にユーザのキー6の操作等によって終了指示が管理タスクから送信された場合は、サービスを終了し、アイドル状態22に戻す(S231)。
また、フォアグラウンド状態23で当該サービスを起動しているときにサービス自身が他のサービスの強連携起動要求を行った場合には(詳細は後述する)、当該サービスは中断状態25に移行する(S232)。また、タスク管理・実行制御部101aよりサービス中断要求を受信した場合にも、サービスを中断状態25に移行する(S232)。
また、フォアグラウンド状態23でサービスを起動しているときに、タスク管理・実行制御部101aからバックグラウンド要求を受信した場合には、当該サービスはバックグラウンド状態24に移行する(S233)。更に、フォアグラウンド状態23で当該サービスを起動しているときにサービス自身が他のサービスの弱連携起動要求を行った場合には(詳細は後述する)、当該サービスタスクはバックグラウンド状態24に移行する(S233)。
また、バックグラウンド状態24でサービスを起動しているときに、タスク管理・実行制御部101aからフォアグラウンド要求を受信した場合には、当該サービスはフォアグラウンド状態23に移行する(S241)。
また、サービスタスクがバックグラウンド状態24で起動していた場合において、サービスが終了した場合(起動している必要がなくなった場合)、または、サービスを強制的にユーザのキー6の操作等によって終了指示がタスク管理・実行制御部101aから送信された場合は、サービスを終了し、アイドル状態22に戻す(S242)。
また、タスク管理・実行制御部101aよりサービス中断要求を受信した場合にも、サービスを中断状態25に移行する(S243)。
また、サービスが中断状態25である場合において、サービスが終了した場合(起動している必要がなくなった場合)、または、サービスを強制的にユーザのキー6の操作等によって終了指示が管理タスクから送信された場合は、サービスを終了し、アイドル状態22に戻す(S251)。
また、サービスが中断状態25である場合において、タスク管理・実行制御部101aからサービスの再開要求を受けた場合、それぞれフォアグラウンド状態23(S252)、バックグラウンド状態24(S253)に移行する。なお、サービスを再開する場合は、前回中断要求を受けた時の状態よりサービスを再開させる。
次に、図6乃至図29を用いて、タスク管理・実行制御部101aにおけるサービス(待受タスク群116a、第1タスク群116b、第2タスク群116c、・・・第Nタスク群116n)の動作管理について説明する。
図6乃至図12は、強連携で新しいサービスを起動する場合を説明するための図である。以降、例えば新たに第1タスク群116bのサービスA(SV−A)をフォアグラウンドで起動する場合には、図6(A)に示すように図示することとする。また、図6(B)は、タスク管理・実行制御部101aの制御情報を説明するための図であるが、新たにSV−Aを起動すると、タスク管理・実行制御部101aは、チェーン管理部151にチェーンAが登録され、タスク管理部152にSV−Aが登録される。なお、図6(B)において、現在フォアグラウンドで実行すべきサービスは矢印で示したサービスであって、チェーン管理部151に最も優先度が高く(以後一番左に図示するものとする)登録されたチェーンを実行し、タスク管理部152に登録されて、実行すべきチェーンの中で最も優先度の高く(以後一番左に図示するものとする)登録されたサービスを実行するものとする。図6(B)の例では、タスク管理・実行制御部101aがチェーンAのSV−Aを実行し、管理している。
図7(A)は、図6(A)のSV−Aがフォアグラウンドで起動している状態で新たに強連携のSV−Bを起動した場合の状態を示した図である。具体的な例としては、メール本文を作成中(SV−A)にカメラ機能(SV−B)を起動した場合や、音声通話中(SV−A)に電話帳(SV−B)を起動した場合や、カレンダ機能でスケジュール機能を表示しているとき(SV−A)にメール作成画面(SV−B)を起動した場合など、様々な場合があげられる。
図6(A)に示したSV−Aがフォアグラウンドで起動しているときに、例えばユーザのキー6の操作によってSV−Bを起動するための操作がなされると、タスク管理・実行制御部101aは、第1タスク群116bにサービスの中断を要求し(SV−Aの中断)、更に第2タスク群116cにSV−Bをフォアグラウンドで起動するように要求する。
図7(B)は、図7(A)の状態におけるタスク管理・実行制御部101aの管理状態を示した図である。チェーン管理部151には、チェーンAが登録される(図6の状態と変わらない)。また、タスク管理部152は、SV−Aの優先度が下げられ、優先度が高い順にSV−B、SV−Aと登録されている。
次に、フォアグラウンドで起動しているサービスが終了した場合の動作を説明する。図8(A)は、図7(A)のSV−Bがフォアグラウンドで起動しSV−Aが中断されている状態で、新たに強連携のSV−Cを起動した場合の状態を示した図である。この状態からSV−Cの実行が終了した場合を示した図を図8(B)に示す。また、図8(C)は、図8(A)の状態のときのタスク管理・実行制御部101aの管理状態を示した図であり、図8(D)は、図8(B)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。なお、図8(B)のように、SV−Cの実行が終了された場合の具体例としては、カレンダ機能でスケジュール機能を表示しているとき(SV−A)にメール作成画面(SV−B)を起動して、更に電話帳機能(SV−C)を呼び出し(図8(A))、その後、電話帳表示状態で一つのメールアドレスを選択・決定した場合や、クリアキー72が押下されて電話帳機能の表示を取り消した場合があげられる。
図8(A)において、SV−Bがフォアグラウンドで起動中に、強連携でSV−Cの起動要求があった場合、図7の説明と同様に、タスク管理・実行制御部101aは、SV−Bにサービスの中断を要求し、更にSV−Cにフォアグラウンドで起動するように要求する。そのとき、図8(C)に示すようにチェーン管理部151には、チェーンAが登録される(図6・図7の状態と変わらない)。また、タスク管理部152は、SV−Cが新たに登録されてSV−BとSV−Aの優先度が下げられ、優先度が高い順にSV−C、SV−B、SV−Aと登録されている。
その後、図8(A)の状態でSV−Cの実行が終了すると、図8(B)に示すように、タスク管理・実行制御部101aは、SV−Cの実行が終了した旨の要求を第3タスク群より受けつけ、次の優先度になっているSV−Bをフォアグラウンドで実行するように第2タスク群116cに要求する。その時、タスク管理・実行制御部101aの管理状態は図8(D)に示すようにチェーン管理部151には、チェーンAが登録されたままであり、タスク管理部152は、SV−Cが消去され、SV−BとSV−Aの優先度が上げられ、優先度が高い順にSV−B、SV−Aと登録される。
次に、フォアグラウンドで起動していないサービスの動作が終了する場合(第1の終了)を説明する。図9(A)は、図7(A)のSV−Bがフォアグラウンドで起動しSV−Aが中断されている状態で、新たに強連携のSV−Cを起動した場合の状態を示した図である(図8(A)と同じである)。この状態から中断していたSV−Bの実行が終了した場合を示した図を図9(B)に示す。また、図9(C)は、図9(B)においてSV−Bの実行の終了要求を受け付けた後の状態を示した図である。また、図10(A)乃至図10(C)は、それぞれ図9(A)乃至図9(C)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。なお、図9(B)のように、SV−Bの実行が終了された場合(第1の終了)の具体例としては、Bluetooth(登録商標)(TM)機能によってOBEX接続(外部とのデータ通信のための接続)待ちをしている(SV−A)ときに、音声発呼による通話(SV−B)を行い、その音声通話中に電話帳を起動して(SV−C)参照しているときに、音声発呼の相手方から通話を切断された場合(SV−Bの終了)があげられる。
図9(A)において、SV−Bがフォアグラウンドで起動中に、強連携でSV−Cの起動要求があった場合は、図8の説明と同様である。そのとき、図10(A)に示すようにチェーン管理部151には、チェーンAが登録される(図6・図7の状態と変わらない)。また、タスク管理部152は、SV−Cが新たに登録されてSV−BとSV−Aの優先度が下げられ、優先度が高い順にSV−C、SV−B、SV−Aと登録されている。
その後、図9(A)の状態でSV−Bの実行が終了すると、図9(B)に示すように、タスク管理・実行制御部101aは、SV−Bの実行が終了した旨の要求を第2タスク群116cより受けつけ、SV−Bを終了させる。更に、SV−Bと強連携で対応付けられていたSV−Cも終了させる。その時、タスク管理・実行制御部101aの管理状態は図10(B)に示すようにチェーン管理部151には、チェーンAが登録されたままであり、タスク管理部152は、SV−Bが消去される。
そして、図9(C)に示すように、SV−Bの次の優先度になっているSV−Aに対して、フォアグラウンドで実行するように第1タスク群116bに要求する。その時、タスク管理・実行制御部101aの管理状態は図10(C)に示すようにチェーン管理部151には、チェーンAが登録されたままであり、タスク管理部152は、SV−Cが消去され、SV−Aの優先度が上げられ、SV−Aのみが登録される。
次に、フォアグラウンドで起動していないサービスの動作が終了する場合(第2の終了)を説明する。図11(A)は、図7(A)のSV−Bがフォアグラウンドで起動しSV−Aが中断されている状態で、新たに強連携のSV−Cを起動した場合の状態を示した図である(図8(A)と同じである)。この状態から中断していたSV−Bの実行が終了した場合を示した図を図11(B)に示す。また、図11(C)は、図11(B)においてSV−Bの実行の終了要求を受け付けた後の状態を示した図である。また、図11(D)は図11(C)の状態において更にSV−Aの実行の終了要求を受け付けた後の状態を示した図である。また、図12(A)乃至図12(D)は、それぞれ図11(A)乃至図11(D)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。
なお、図11(B)のように、SV−Bの実行が終了された場合(第2の終了)の具体例としては、メニュー画面一覧(機能一覧ランチャー画面)を表示してから(SV−A)、電話帳を開き(SV−B)、その後電話帳からメール作成画面(SV−C)に移行したとき(電話帳(SV−B)の終了)があげられる。
図11(A)において、SV−Bがフォアグラウンドで起動中に、強連携でSV−Cの起動要求があった場合は、図8の説明と同様である。そのとき、図12(A)に示すようにチェーン管理部151には、チェーンAが登録される(図6・図7の状態と変わらない)。また、タスク管理部152は、SV−Cが新たに登録されてSV−BとSV−Aの優先度が下げられ、優先度が高い順にSV−C、SV−B、SV−Aと登録されている。
その後、図11(A)の状態でSV−Bの実行が終了すると、図11(B)に示すように、タスク管理・実行制御部101aは、SV−Bの実行が終了した旨の要求を第2タスク群116cより受けつけ、SV−Bを終了させる。その時、図9の第1の終了の場合と異なり、SV−Cのフォアグラウンドでの実行は終了させず、そのまま実行を継続する。
そして、タスク管理・実行制御部101aの管理状態は図12(B)に示すようにチェーン管理部151には、チェーンAが登録されたままであり、タスク管理部152は、SV−Bが消去される。
そして、図11(C)に示すように、SV−Bの次の優先度になっているSV−Aの優先度を一つあげるように変更する。その時、タスク管理・実行制御部101aの管理状態は図12(C)に示すようにチェーン管理部151には、チェーンAが登録されたままであり、タスク管理部152は、SV−Bが消去され、SV−Aの優先度が上げられ、優先度が高い順にSV−C、SV−Aと登録される。
なお、図11(C)の状態でSV−Cの実行が終了した場合には、図11(D)に示すようにタスク管理・実行制御部101aは、SV−Aに対してフォアグラウンドで実行するように要求する。その時、タスク管理・実行制御部101aの管理状態は図12(D)に示すようにチェーン管理部151には、チェーンAが登録されたままであり、タスク管理部152は、SV−Cが消去され、SV−Aの優先度が上げられ、SV−Aのみが登録される。
次に、あるサービスがフォアグラウンドで起動している状態で新たに弱連携のサービスを起動した場合の動作について説明する。図13乃至図18は、新たに弱連携のサービスを起動した場合の動作を説明する図である。
図13(A)は、SV−AとSV−BとSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−Bが中断されている状態を示した図である。この状態から新たに弱連携のサービスSV−Dを起動した場合を示した図を図13(B)に示す。また、図14(A)及び図14(B)は、それぞれ図13(A)及び図13(B)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。具体的な例としては、メインメニュー(SV−A)を起動後、機能一覧画面(SV−B)より音楽プレーヤ(SV−C)を起動しているときにメール作成画面(SV−D)を起動したとき、メインメニュー(SV−A)を起動後、機能一覧画面(SV−B)よりブラウザ(SV−C)を起動しているときにメール作成画面(SV−D)を起動したときなど、様々な場合があげられる。
図13(A)に示したように、SV−AとSV−BとSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−Bが中断されている状態において、図14(A)に示すようにチェーン管理部151には、チェーンAが登録される。また、タスク管理部152は、優先度が高い順にSV−C、SV−B、SV−Aと登録されている。
その後、図13(A)の状態、つまりSV−Cがフォアグラウンドで起動しているときに、例えばユーザのキー6の操作によって新たにSV−Dを実行すべき操作がなされると、図13(B)に示すように、タスク管理・実行制御部101aは、SV−Dを実行すべき旨の要求を受けつけ、SV−Dを新たなチェーンBの管理を用いて実行させる。そして、タスク管理・実行制御部101aは、SV−Dにフォアグラウンドで実行するよう指示する。そして、タスク管理・実行制御部101aは、SV−Cに対して以後バックグラウンドで実行するように指示する。その時、タスク管理・実行制御部101aの管理状態は図14(B)に示すようにチェーン管理部151には、チェーンAの優先度を一つ下げ、チェーンAに加えてチェーンBを一番高い優先度にて登録する。また、タスク管理部152は、チェーンAとしてのタスク管理はそのまま優先度が高い順にSV−C、SV−B、SV−Aが登録されたままである。そしてそれに加えてチェーンBの管理として、SV−Dを新たに登録する。
図15(A)は、SV−AとSV−BとSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−Bが中断されている状態を示した図である。この状態から新たに弱連携のサービスSV−Dをフォアグラウンドで起動した場合を示した図を図15(B)に示す。さらに、図15(B)の状態で、バックグラウンドで起動しているSV−Cがタスク管理・実行制御部101aに対してフォアグラウンド要求を行い、それがタスク管理・実行制御部101aに受け入れられた場合を示した図を図15(C)に示す。また、図16(A)乃至図16(C)は、それぞれ図15(A)乃至図15(C)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。具体的な例としては、メインメニュー(SV−A)を起動後、機能一覧画面(SV−B)よりカウントタイマー(予めユーザがカウントした秒数をカウントする機能、SV−C)機能を起動し、カウントタイマー機能の途中で、ショートカット機能(SV−D)を呼び出して起動中に、カウントタイマー機能によってカウントされていた秒数が0となり、アラーム画面を表示し、アラーム音を鳴らす(フォアグラウンド要求)場合があげられる。
なお、図15(A)・図15(B)・図16(A)・図16(B)に関しては、それぞれ図13(A)・図13(B)・図14(A)・図14(B)と同じであるため、その説明を省略する。
図15(B)の状態において、SV−Cがバックグラウンドで起動しているときに、SV−Cがフォアグランドで実行すべきイベントが発生した場合、タスク管理・実行制御部101aは、SV−Cからフォアグラウンドで実行すべきイベントが発生した旨の指示を受け付け、現在フォアグラウンドで実行しているSV−DがSV−Cの割り込みイベントを許容しているか否かを判断し、許容している場合には、SV−Dに対してバックグラウンドで実行すべき指示を行う。そして、タスク管理・実行制御部101aは、SV−Cに対して、フォアグラウンドで実行すべき旨の指示を行う。図15(C)はSV−DがSV−Cの割り込みを許容した場合の状態を示している。
一方、タスク管理・実行制御部101aは、現在フォアグラウンドで実行しているSV−DがSV−Cの割り込みイベントを許容しているか否かを判断して、SV−Cの割り込みを許容していない場合(例えば、SV−Dが通話タスクであった場合など)には、SV−Cに対してフォアグラウンドでの実行を禁止する旨の指示を行う。
図15(C)のときのタスク管理・実行制御部101aの管理状態は、図16(C)に示すようにチェーン管理部151には、チェーンAとチェーンBとの優先度が高い順にチェーンA、チェーンBの順で登録される(チェーンAとチェーンBとの優先度が入れ替えられる)。また、タスク管理部152は、チェーンAとしてのタスク管理はそのまま優先度が高い順にSV−C、SV−B、SV−Aが登録されたままである。さらに、チェーンBとしてのタスク管理もSV−Dが登録されたままである。そして、チェーンAの実行が優先されるため、チェーンAのSV−Cがフォアグラウンドで実行される。
次に、図17(A)は、SV−AとSV−BとSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−Bが中断されている状態を示した図である。この状態から新たに弱連携のサービスSV−Dをバックグラウンドで起動した場合を示した図を図17(B)に示す。また、図18(A)及び図18(B)は、それぞれ図17(A)及び図17(B)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。具体的な例としては、メインメニュー(SV−A)を起動後、機能一覧画面(SV−B)よりゲーム機能(例えばJAVA(登録商標、以下省略)などで実現、SV−C)機能を起動し、ゲーム機能の途中で、通信部118を介してメールを受信した(SV−D)場合などがあげられる。
なお、図17(A)及び図18(A)に関しては、それぞれ図13(A)及び図14(A)と同じであるため、その説明を省略する。
図17(A)の状態、つまりSV−Cがフォアグラウンドで起動しているときに、例えば外部から通信部118を通じて受信したメールを通知するために、新たにSV−Dを実行すべき指示が通信部118よりなされると(SV−Dを実行すべき指示がユーザのキー操作以外をトリガとしてなされた場合)、図17(B)に示すように、タスク管理・実行制御部101aは、SV−Dを実行すべき旨の要求を受けつけ、SV−Dを新たなチェーンBの管理を用いて実行させる(弱連携での起動)。そして、タスク管理・実行制御部101aは、SV−Dをフォアグラウンドで実行するか、バックグラウンドで実行するかを現在フォアグラウンドで実行しているサービスに応じて判断する。そして、タスク管理・実行制御部101aは、SV−Dをバックグラウンドで実行すべきであると判断した場合、SV−Dに対してバックグラウンドで実行するように指示する。その際、SV−Cの実行はフォアグラウンドでの実行を継続する。
その時、タスク管理・実行制御部101aの管理状態は図18(B)に示すようにチェーン管理部151には、チェーンAの優先度をそのままにして、更にチェーンAに加えてチェーンBをチェーンAより一つ低い優先度にて登録する。また、タスク管理部152は、チェーンAとしてのタスク管理はそのまま優先度が高い順にSV−C、SV−B、SV−Aが登録されたままである。そしてそれに加えてチェーンBの管理として、SV−Dを新たに登録する。
次に、あるサービスが複数起動している状態で新たなサービスを起動する場合、その新たなサービスが既に起動しているサービスである場合(サービスの多重起動)について説明する。図19乃至図26は、サービスの多重起動についての動作を説明する図である。
まず、図19(A)は、SV−AとSV−B1とSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−B1が中断されている状態を示した図である。この状態から新たにSV−Cと弱連携のサービスSV−B2を起動した場合を示した図を図19(B)に示す。また、図20(A)及び図20(B)は、それぞれ図19(A)及び図19(B)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。具体的な例としては、ショートカット機能(SV−A)を起動後、メール(SV−B1)機能を起動してメールを作成中に、その後電話帳機能(SV−C)を参照しているときに、通信部118を介してメールを受信して再度メール機能(SV−B2)を起動するときなどがあげられる。なお、SV−B1とSV−B2とは同じサービスであり、多重起動が許容されているものとする。
図19(A)に示したように、SV−AとSV−B1とSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−B1が中断されている状態において、図20(A)に示すようにチェーン管理部151には、チェーンAが登録される。また、タスク管理部152は、優先度が高い順にSV−C、SV−B1、SV−Aと登録されている。
その後、図19(A)の状態、つまりSV−Cがフォアグラウンドで起動しているときに、例えば外部から通信部118を通じて受信したメールを通知するために、新たにSV−B2を実行すべき指示が通信部118よりなされると(SV−B2を実行すべき指示がユーザのキー操作以外をトリガとしてなされた場合)、図19(B)に示すように、SV−B1は、重複して同様のサービスを起動可能であるか否かを判断し、同様のサービスが多重起動可能である場合には、タスク管理・実行制御部101aに対して弱連携にて多重してSV−B2を起動させるように要求を送信し、タスク管理・実行制御部101aは、SV−B2を新たなチェーンBの管理を用いて実行させる。そして、SV−B2はフォアグラウンドで実行する。そして、タスク管理・実行制御部101aは、SV−Cに対して以後バックグラウンドで実行するように指示する。その時、タスク管理・実行制御部101aの管理状態は図20(B)に示すようにチェーン管理部151には、チェーンAの優先度を一つ下げ、チェーンAに加えてチェーンBを一番高い優先度にて登録する。また、タスク管理部152は、チェーンAとしてのタスク管理はそのまま優先度が高い順にSV−C、SV−B1、SV−Aが登録されたままである。そしてそれに加えてチェーンBの管理として、SV−B2を新たに登録する。
なお、図19(C)・図19(D)・図20(C)・図20(D)には、強連携でSV−B2を新たに多重起動する場合を図示したが、弱連携の場合もほぼ同じ動作である。SV−B2を強連携にて起動する旨の指示がユーザによってなされると、SV−B1は、重複して同様のサービスを起動可能であるか否かを判断し、同様のサービスが多重起動可能である場合には、タスク管理・実行制御部101aに対して強連携にて多重してSV−B2を起動させるように要求を送信し、新たなSV−B2をフォアグラウンドで実行する。
そして、タスク管理・実行制御部101aは、SV−Cに対して中断要求を行い、SV−Cは、タスクの実行を中断する。その時、タスク管理・実行制御部101aの管理状態は図20(D)に示すように、チェーン管理部151は、チェーンAが登録されたままである。また、タスク管理部152は、新たにSV−B2を起動したため、チェーンAとしてのタスク管理は優先度が高い順にSV−B2、SV−C、SV−B1、SV−Aというように登録する。
なお、多重起動が可能である場合には、同じサービスであるものの、あたかも異なるサービスであるかのように動作させることが望ましく、最初に起動していたサービス(上記例であれば最初に起動していたSV−B1)は中断直前の状態を記憶させておき、再度フォアグラウンドで起動する時は、多重起動があったか否かに係りなく、起動前と同じ状態から動作させることが望ましい。
次に、図21(A)は、SV−AとSV−BとSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−Bが中断されている状態を示した図である(図19(A)と同じ)。この状態から新たにSV−Cと弱連携のサービスSV−Bを起動した場合(サービスSV−Bが多重起動を許容しない場合)を示した図を図21(B)に示す。また、図22(A)及び図22(B)は、それぞれ図21(A)及び図21(B)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。具体的な例としては、ショートカット機能(SV−A)を起動後、JAVA機能(SV−B)を起動してゲームを実行中に、その後ブラウザ機能(SV−C)を実行してウェブを閲覧しているときに、再度別のJAVA機能(例えばナビ機能)(SV−B)を起動するときなどがあげられる。
図21(A)に示したように、SV−AとSV−BとSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−Bが中断されている状態において、図21(A)に示すようにチェーン管理部151には、チェーンAが登録される。また、タスク管理部152は、優先度が高い順にSV−C、SV−B、SV−Aと登録されている。
その後、図21(A)の状態、つまりSV−Cがフォアグラウンドで起動しているときに、既に起動しているSV−B、例えばユーザのキー6の操作によってSV−Bが新たに起動する操作がなされた場合、図21(B)に示すように、SV−Bは、重複してSV−Bを起動可能であるか否かを判断し、SV−Bが多重起動不可能であると判断された場合には、タスク管理・実行制御部101aに対して弱連携にて新たにSV−Bを起動させるように要求を送信し、タスク管理・実行制御部101aは、SV−Bを新たなチェーンBの管理を用いて実行させる。そして、新たに起動したSV−Bはフォアグラウンドで実行する。そして、タスク管理・実行制御部101aは、既に起動していたSV−B(中断中)と、そのSV−Bと強連携で起動しており、かつ優先度の高いSV−Cに対してサービスを終了するように指示する。その時、タスク管理・実行制御部101aの管理状態は図22(B)に示すようにチェーン管理部151には、チェーンAの優先度を一つ下げ、チェーンAに加えてチェーンBを一番高い優先度にて登録する。また、タスク管理部152は、チェーンAとしてのタスク管理はSV−B及びSV−Cの終了に伴い消去され、SV−Cだけが登録された状態となる。そして、それに加えてチェーンBの管理として、SV−Bを新たに登録する。
なお、多重起動したサービスが、基底となるサービスである場合(SV−Aの新規起動で、SV−Aが多重起動不可の場合)には、図23(A)・図23(B)・図24(A)・図24(B)に示すように、既に起動していた重なるサービス(図23(B)ではSV−A)より優先度の高い強連携のサービスは全て終了するため、チェーンAは全て終了することになる。そのため、タスク管理・実行制御部101aのタスク管理部152におけるチェーンAの管理も消去される。
なお、図21(A)、図21(B)のサービス管理は、以下のように制御してもよい。
図25(A)は、SV−AとSV−BとSV−Cとが強連携でチェーンとなっており、SV−Cがフォアグラウンドで起動し、SV−A及びSV−Bが中断されている状態を示した図である(図21(A)と同じ)。この状態から新たにSV−Cと弱連携のサービスSV−Bを起動した場合(サービスSV−Bが多重起動を許容しない場合、その他の管理方法)を示した図を図25(B)に示す。また、図26(A)及び図26(B)は、それぞれ図25(A)及び図25(B)の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。
図25(A)の状態、つまりSV−Cがフォアグラウンドで起動しているときに、既に起動しているSV−B、例えばユーザのキー6の操作によってSV−Bが新たに起動する操作がなされた場合、図25(B)に示すように、SV−Bは、重複してSV−Bを起動可能であるか否かを判断し、SV−Bが多重起動不可能であると判断した場合には、タスク管理・実行制御部101aに対して弱連携にて新たにSV−Bを起動させるように要求を送信し、タスク管理・実行制御部101aは、SV−Bを新たなチェーンBの管理を用いて実行させる。そして、新たに起動したSV−Bはフォアグラウンドで実行する(ここまでは図21(B)と同じ)。そして、タスク管理・実行制御部101aは、既に起動していたSV−B(中断中)に対してサービスを終了するように指示し、SV−AとSV−Cとをサービス連携させるように指示する。その時、タスク管理・実行制御部101aの管理状態は図26(B)に示すようにチェーン管理部151には、チェーンAの優先度を一つ下げ、チェーンAに加えてチェーンBを一番高い優先度にて登録する。また、タスク管理部152は、チェーンAのタスク管理はSV−Bの終了に伴い消去され、優先度の高い順に、SV−C、SV−Aが登録された状態となる。そして、それに加えてチェーンBの管理として、SV−Bを新たに登録する。
次に、図27乃至図30を用いて複数のサービスが連携して起動しているときに割り込み動作が生じた場合について説明する。図27は割り込み動作が生じる前の図であり、図28乃至図30は割り込みが生じた後の図である。
図27(A)は、待受タスク群116a(SV−A)が起動後に、SV−BとSV−Cとが弱連携で起動し、その後SV−DとSV−Eとが強連携で起動しSV−Eがフォアグラウンドで起動しているときを示した図である。この状態から割込タスクとして新たにSV−Fが発生した場合を示した図を図28に示す。また、図27(B)及び図29は、それぞれ図27(A)及び図28の状態のときのタスク管理・実行制御部101aの管理状態を示した図である。
具体的な例としては、待受画面(SV−A)を起動後、ブラウザ機能(SV−B)を起動し、その後メール作成機能(SV−C)を起動して、その後添付ファイル一覧画面表示機能(SV−D)を選択し、更にカメラ機能(SV−E)を起動し、カメラ起動中に音声着信(SV−F)が割り込んだ場合などがあげられる。
図27(A)に示したように、SV−AとSV−BとSV−Cとが弱連携でそれぞれチェーンとなっており、SV−CとSV−DとSV−Eとが強連携でチェーンとなっている。そして、SV−Eがフォアグラウンドで起動しており、SV−B及びSV−Aがバックグラウンドで起動している状態において、図27(B)に示すようにチェーン管理部151には、優先度が高い順に、チェーンB、チェーンA、待受チェーンが登録される。また、タスク管理部152は、待受チェーンとしてSV−Aが、チェーンAとしてSV−Aが、チェーンBとして優先度が高い順にSV−E、SV−D、SV−Cが登録されている。
その後、図27(A)の状態、つまりSV−Eがフォアグラウンドで起動しているときに、通信部118が音声着信信号を受信した場合、制御部101は、図示しない通話タスク(第Kタスク群とする)に対して起動するように指示し、更に、通話タスクは、タスク管理・実行制御部101aに対して当該通話タスクを割込で実行するように要求する。そして、タスク管理・実行制御部101aは、当該通話タスクを現在実行中のサービスに弱連携で起動を許容するようにタスク管理を行い(SV−Fの起動)、今までフォアグラウンドで起動していたSV−Eに対してバックグラウンドで動作するように指示する。その時の状態を示した図を図28に示す。
その時、タスク管理・実行制御部101aの管理状態は図29に示すようにチェーン管理部151には、チェーンB、チェーンA、待受チェーンの優先度をそれぞれ一つ下げ、それらに加えて割込チェーンを一番高い優先度にて登録する。また、タスク管理部152は、待受チェーン、チェーンA、チェーンBとしてのタスク管理はそのまま変わらず、新たに割込チェーンとして、SV−Fを登録する。
以上に述べたように、割込の具体例としては、(ア)音声着信信号の受信による通話タスク起動、(イ)アラーム機能におけるアラーム時刻の到来によるアラームタスク起動、(ウ)メール受信信号の受信によるメールタスク(メールヘッダ受信)起動、(エ)ユーザが予め決めた時刻に電源をOFFにする機能(以降自動電源OFF機能と記す)のタスク起動などが挙げられる。しかしながら、これらの割込事由は、割込が生じたとき一律に割込チェーンを最も高い優先度で起動させると不具合が生じる可能性がある。それぞれのタスクに応じて最も高い優先度で起動させるか、それ以外の動作を行うかを臨機応変に変更させることが望ましい。以下に、上記(ア)乃至(エ)における割込の優先順位について幾つかのパターンを説明する。
(ア)通話タスクの割込の場合
音声着信信号を受信した場合には、図27乃至図29によって説明したとおり、常に最も高い優先度で割込むように制御する。
(イ)アラームタスクの割込場合
アラーム機能におけるアラーム時刻の到来によるアラームタスクを割込ませる場合、次の方法で割込ませることが望ましい。アラームタスクの割込の場合を図27(A)を用いて説明する。まず、アラームタスク(第Lタスク群とする)がアラーム報知時刻になったと判断すると、タスク管理・実行制御部101aに対して起動要求を行う。そして、タスク管理・実行制御部101aは、現在の起動しているサービス(図27(A)の例ではSV−A乃至SV−E)のうち、一番優先度の高いチェーン(図27(A)の例ではチェーンB)のチェーンのそれぞれのサービス(SV−C、SV−D、SV−E)に対して、アラームタスク(第Lタスク群)を割込許容に設定されているか否かを判断するように指示する。また、一番優先度の高いチェーンのそれぞれのサービスは、アラームタスクの割込み許容設定がなされているかを判断し、その結果をタスク管理・実行制御部101aに返す。なお、携帯電話機1のそれぞれのタスク群(待受タスク群116a、第1タスク群116b、・・・第Nタスク群16n)は予め、自己のタスク群が起動しているときに、割込を許容するタスク群と割込みを許容しないタスク群を予め登録しておくことが望ましいが、これに限定しない。例えば、サービスの起動時や、サービスの動作変更時に随時タスク管理・実行制御部101aにサービスの登録とともに関連付けて、割込みを許容する又は割込みを拒否するサービスを登録してもよい。このようにすれば、タスク管理・実行制御部101aが割込みを許容するか否かをわざわざサービスに問い合わせる必要がなく、タスク管理・実行制御部101a自身が当該割込みを許容するか否かを判断できる。
そして、タスク管理・実行制御部101aは、上記一番優先度の高いチェーンの中でアラームタスクの割込みが禁止されているサービスが存在した場合、アラームタスク(第Lタスク群)対して、アラームの実行を禁止する。そして、アラームタスクはその禁止信号を受け、一定時間経過後までアラーム動作を保留する(一定時間経過後に再度アラームタスクを起動させる)。
一方、タスク管理・実行制御部101aは、上記一番優先度の高いチェーンの中でアラームタスクの割込みが禁止されているサービスが存在しなかった場合(許容している場合)、アラームタスクを割込ませるように指示し、図28に示すように割込チェーンの登録、割込前のサービス(図28の例ではSV−E)に対してバックグラウンドで動作するように指示する。
(ウ)メールタスクの割込の場合
次に、メール受信信号を受信して、メールタスクを起動して割込ませる場合、次の方法で割込ませることが望ましい。メールタスクの割込の場合を図27(A)を用いて説明する。まず、通信部118を介してメール受信信号を受信し、メールタスク(第Mタスク群とする)に対してタスクの起動の命令を受けると、タスク管理・実行制御部101aに対して起動要求を行う。そして、タスク管理・実行制御部101aは、現在フォアグラウンドで起動しているサービス(一番優先度の高いサービス、図27(A)の例ではSV−E)に対して、メールタスク(第Mタスク群)を割込許容に設定されているか否かを判断するように指示する。また、一番優先度の高いチェーンのそれぞれのサービスは、メールタスクの割込み許容設定がなされているかを判断し、その結果をタスク管理・実行制御部101aに返す。
そして、タスク管理・実行制御部101aは、現在フォアグラウンドで起動しているサービスが、メールタスクの割込みを禁止している場合、メールタスク(第Mタスク群)対して、バックグラウンドでサービスを起動するように指示する。例えば、図30に示すように、現在の一番優先度の高いチェーンの次の優先度のチェーンとして起動する。そして、メールタスクはバックグラウンドでの起動指示を受けて、サービスを起動する。なお、通常バックグラウンドでサービスを起動する際のディスプレイ5の表示はフォアグラウンドのサービスの表示がなされるが、メールタスクがバックグラウンドで割込んだ場合には、例えば図3(A)に示すような位置、つまりディスプレイ5又はサブディスプレイ13の一部にメール受信ピクト57を表示させてもよい。また、メールタスクがバックグラウンドで割込んだ場合には、図示しないバイブレータを振動させてもよいし、メール着信音をスピーカ109より鳴動させてもよい。
一方、タスク管理・実行制御部101aは、現在フォアグラウンドで起動しているサービスが、メールタスクの割込みを許容している場合、メールタスクを割込ませるように指示し、割込チェーンの登録を行い、割込前のフォアグラウンドのサービス(SV−E)に対してバックグラウンドで動作するように指示する。
(エ)自動電源OFF機能のタスクの割込の場合
自動電源OFF機能のタスクを割込ませる場合、次の方法で割込ませることが望ましい。自動電源OFF機能のタスクの割込の場合を図27(A)を用いて説明する。まず、自動電源OFF機能のタスク(第Kタスク群とする)が自動電源OFFの時刻になったと判断すると、タスク管理・実行制御部101aに対して起動要求を行う。そして、タスク管理・実行制御部101aは、現在の起動している全てのサービス(図27(A)の例ではSV−A乃至SV−E)に対して、自動電源OFF機能のタスク(第Kタスク群)を割込許容に設定されているか否かを判断するように指示する。また、指示を受けたサービスは、自動電源OFF機能のタスクの割込み許容設定がなされているかを判断し、その結果をタスク管理・実行制御部101aに返す。
そして、タスク管理・実行制御部101aは、全てのサービスの中で自動電源OFF機能のタスクの割込みが禁止されているサービスが存在した場合、自動電源OFF機能のタスク(第Kタスク群)対して、自動電源OFF機能の実行を禁止する。そして、自動電源OFF機能のタスクはその禁止信号を受け、一定時間経過後まで自動電源OFF機能のタスクを保留する(一定時間経過後に再度タスクを起動させる)。なお、タスク管理・実行制御部は、一度自動電源OFF機能の実行を禁止した場合、タスク管理の状況が変化するたびにその旨を通知(変化通知の送信)し、自動電源OFF機能のタスクはその変化通知を受け、再度起動要求を行うようにしてもよい。
一方、タスク管理・実行制御部101aは、全てのサービスの中で自動電源OFFのタスクの割込みが禁止されているサービスが存在しなかった場合(許容している場合)、自動電源OFF機能のタスクを割込ませるように指示する。
なお、上記(ア)乃至(エ)の4つの具体例を用いた割込の判断方法を説明したが、特にこれに限定しない。例えば、アラームタスクの割込を(ア)の方法、(ウ)の方法、(エ)の方法のいずれかを用いてもよいことは言うまでもない。
以上のように、本実施例のように、タスク群を管理する際に、タスク群同士の結びつきを考慮したタスク管理を可能としているため、より適切なタスク管理ができる。
なお、本発明は、この実施例に限定されるものではない。例えば、携帯電話機だけではなく、PDAやPHSなどの他の携帯端末にも適用可能である。