(57)【要約】  コンピューティングデバイス上での第１のアプリケーションの実行と関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、アプリケーション状態の履歴情報を保存するシステム。アプリケーション状態の履歴情報は、第１のアプリケーションの後の再起動で使用するために保存される。【選択図】    図１
2008500647.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上でアプリケーションを実行する方法であって、
第１のアプリケーションの後の再起動で使用するために、コンピューティングデバイス上での第１のアプリケーションの実行と関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、アプリケーション状態の履歴情報を保存することと、
コンピューティングデバイス上で第２のアプリケーションを起動することとを含む方法。
【請求項２】
第２のアプリケーションを起動するステップが、アプリケーションの実行の開始を選択的に無視する請求項１記載の方法。
【請求項３】
第２のアプリケーションを起動するステップが、コンピューティングデバイス上での第１のアプリケーションの実行を選択的に維持するステップをさらに含む請求項１記載の方法。
【請求項４】
第１のアプリケーションの実行を選択的に維持するステップが、第１のアプリケーションと関係付けられたアプリケーション状態の履歴情報と、第２のアプリケーションと関係付けられた情報との間における整合情報を検出するステップをさらに含む請求項３記載の方法。
【請求項５】
整合情報が、アプリケーション識別情報である請求項４記載の方法。
【請求項６】
アプリケーション状態の履歴情報を保存するステップが、第２のアプリケーションを起動するステップに依存する請求項１記載の方法。
【請求項７】
第２のアプリケーションを起動するステップが、第１のアプリケーションの実行状況のやがてやって来る損失を検出するステップに依存する請求項１記載の方法。
【請求項８】
アプリケーション状態の履歴情報が、固有の機能モードに関係する情報の履歴スナップショットを含むモード情報を含む請求項１記載の方法。
【請求項９】
アプリケーション状態の履歴情報が、動的なユーザインターフェースデータに関係する情報の履歴スナップショットを含むユーザインターフェースデータ情報を含む請求項１記載の方法。
【請求項１０】
アプリケーション状態の履歴情報が、関係付けられたアプリケーションの、他のアプリケーションに対する連続する順番を示す請求項１記載の方法。
【請求項１１】
第２のアプリケーションの起動が、第１のアプリケーションによって開始される請求項１記載の方法。
【請求項１２】
コンピューティングデバイスが、無線デバイスである請求項１記載の方法。
【請求項１３】
コンピューティングデバイス上でアプリケーションを実行する方法であって、
コンピューティングデバイス上で前に実行した前の第１のアプリケーションと関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、保存されているアプリケーション状態の履歴情報を検索することと、
検索されたアプリケーション状態の履歴情報を使用して、コンピューティングデバイス上で前の第１のアプリケーションを再起動することとを含む方法。
【請求項１４】
前の第１のアプリケーションを再起動するステップが、任意のアプリケーションの実行の開始を無視する請求項１３記載の方法。
【請求項１５】
前の第１のアプリケーションを再起動するステップが、コンピューティングデバイス上で現在実行しているアプリケーションを、前の第１のアプリケーションとして選択的に維持するステップをさらに含む請求項１３記載の方法。
【請求項１６】
コンピューティングデバイス上で現在実行しているアプリケーションを前の第２のアプリケーションとして選択的に維持するステップが、現在実行しているアプリケーションと関係付けられた動的なアプリケーション状態の情報と、前の第２のアプリケーションと関係付けられた検索されたアプリケーション状態の履歴情報の間における整合情報を検出するステップをさらに含む請求項１５記載の方法。
【請求項１７】
整合情報が、アプリケーション識別情報である請求項１６記載の方法。
【請求項１８】
前の第１のアプリケーションを再起動するステップが、アプリケーション状態の履歴情報を使用して、動的なアプリケーション状態情報を再起動するステップをさらに含む請求項１３記載の方法。
【請求項１９】
アプリケーション状態の履歴情報が、固有の機能モードに関係する情報の履歴スナップショットを含むモード情報を含む請求項１３記載の方法。
【請求項２０】
モード情報を使用して、動的なアプリケーション状態情報を再び初期設定するステップをさらに含む請求項１９記載の方法。
【請求項２１】
アプリケーション状態の履歴情報が、動的なユーザ インターフェース データに関係する情報の履歴スナップショットを含むアプリケーション ユーザ インターフェース データ情報を含む請求項１３記載の方法。
【請求項２２】
アプリケーション ユーザ インターフェース データ情報を使用して、動的なアプリケーション状態情報を再び初期設定するステップをさらに含む請求項２１記載の方法。
【請求項２３】
コンピューティングデバイスが、無線デバイスである請求項１３記載の方法。
【請求項２４】
コンピューティングデバイス上でアプリケーションを実行する方法であって、
コンピューティングデバイス上で実行している第１のアプリケーションを出ることと、
第１のアプリケーションと関係付けられたアプリケーション状態の履歴情報を保存することと、
第１のアプリケーションを出ることに応答して、第２のアプリケーションを起動することと、
第２のアプリケーションを出ることと、
第１のアプリケーションと関係付けられた保存されているアプリケーション状態の履歴情報を検索することと、
第２のアプリケーションを出ることに応答して、検索されたアプリケーション状態の履歴情報を使用して、コンピューティングデバイス上で第１のアプリケーションを再起動することとを含む方法。
【請求項２５】
第２のアプリケーションを起動するステップが、第１のアプリケーションと第２のアプリケーションとの間における整合するアプリケーションの識別情報を検出することに応答して、第１のアプリケーションの実行を選択的に維持するステップをさらに含む請求項２４記載の方法。
【請求項２６】
第１のアプリケーションを再起動するステップが、第１のアプリケーションと第２のアプリケーションとの間における整合するアプリケーション識別情報を検出することに応答して、第２のアプリケーションの実行を選択的に維持するステップをさらに含む請求項２４記載の方法。
【請求項２７】
第１のアプリケーションを再起動するステップが、アプリケーション状態の履歴情報を使用して、第１のアプリケーションを、前に出た第１のアプリケーションと関係付けられた前の状態の履歴情報で再び初期設定するステップをさらに含む請求項２４記載の方法。
【請求項２８】
コンピューティングデバイスが、無線デバイスである請求項２４記載の方法。
【請求項２９】
コンピューティングデバイス上でアプリケーションを実行する方法であって、
コンピューティングデバイス上で第１のアプリケーションを実行することと、
第１のアプリケーションから第２のアプリケーションへの呼び出しを生成することと、
第２のアプリケーションへの呼び出しを検出することに応答して、第１のアプリケーションを出ることと、
第２のアプリケーションへの呼び出しに応答して、第１のアプリケーションと関係付けられたアプリケーション状態の履歴情報を保存することと、
第２のアプリケーションへの呼び出しに応答して、第２のアプリケーションを起動することと、
第２のアプリケーションの終了を検出することと、
第２のアプリケーションの終了を検出することに応答して、第１のアプリケーションと関係付けられた保存されているアプリケーション状態の履歴情報を検索することと、
第２のアプリケーションの終了を検出することに応答して、検索されたアプリケーション状態の履歴情報を使用して、第１のアプリケーションを再起動することとを含む方法。
【請求項３０】
第２のアプリケーションを起動するステップが、第１のアプリケーションと第２のアプリケーションの間における整合するアプリケーションの識別情報を検出することに応答して、第１のアプリケーションの実行を選択的に維持するステップをさらに含む請求項２９記載の方法。
【請求項３１】
第１のアプリケーションを再起動するステップが、第１のアプリケーションと第２のアプリケーションとの間における整合するアプリケーションの識別情報を検出することに応答して、第２のアプリケーションの実行を選択的に維持するステップをさらに含む請求項２９記載の方法。
【請求項３２】
コンピューティングデバイスが、無線デバイスである請求項３２記載の方法。
【請求項３３】
メモリと、
メモリに記憶されていて、動的なアプリケーション状態情報を生成するように動作可能なアプリケーションと、
アプリケーションが実行されるメモリに記憶されているランタイム環境と、
メモリに結合されていて、コンピューティングデバイス上で現在実行しているアプリケーションの後の再起動で使用するために、コンピューティングデバイス上で現在実行しているアプリケーションと関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、アプリケーション状態の履歴情報を保存するためのコードを実行するように動作可能なプロセッサとを含むコンピューティングデバイス。
【請求項３４】
アプリケーション状態の履歴情報を保存するためのコードが、アプリケーションおよびランタイム環境の少なくとも一方に置かれている請求項３３記載のコンピューティングデバイス。
【請求項３５】
コンピューティングデバイスが、無線デバイスである請求項３３記載のコンピューティングデバイス。
【請求項３６】
メモリと、
メモリに記憶されていて、動的なアプリケーション状態情報を生成するように動作可能なアプリケーションと、
アプリケーションが実行されるランタイム環境と、
メモリに結合されていて、コンピューティングデバイス上で前に実行したアプリケーションと関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、保存されているアプリケーション状態の履歴情報を検索するためのコードを実行するように動作可能なプロセッサとを含むコンピューティングデバイス。
【請求項３７】
アプリケーション状態の履歴情報を検索するためのコードが、アプリケーションおよびランタイム環境の少なくとも一方に置かれている請求項３６記載のコンピューティングデバイス。
【請求項３８】
コンピューティングデバイスが、無線デバイスである請求項３６記載のコンピューティングデバイス。
【請求項３９】
コンピュータ読み出し可能媒体上で具体化されるコンピュータプログラムであって、コンピュータプログラムは、アプリケーションの履歴情報を保存することができ、
第１のアプリケーションの後の再起動で使用するために、コンピューティングデバイス上での第１のアプリケーションの実行と関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、アプリケーション状態の履歴情報を保存するように動作可能なコードと、
コンピューティングデバイス上で第２のアプリケーションを起動するように動作可能なコードとを含むコンピュータプログラム。
【請求項４０】
コンピュータ読み出し可能媒体上で具体化されるコンピュータプログラムであって、コンピュータプログラムは、アプリケーションの履歴情報を検索することができ、
コンピューティングデバイス上で前に実行していた前の第１のアプリケーションと関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、保存されているアプリケーション状態の履歴情報を検索するように動作可能なコードと、
検索されたアプリケーション状態の履歴情報を使用して、コンピューティングデバイス上で前の第１のアプリケーションを再起動するように動作可能なコードとを含むコンピュータプログラム。
【請求項４１】
第１のアプリケーションの後の再起動で使用するために、コンピューティングデバイス上での第１のアプリケーションの実行と関係付けられた動的なアプリケーション状態の情報の履歴スナップショットを含む、アプリケーション状態の履歴情報を保存する手段と、
コンピューティングデバイス上で第２のアプリケーションを起動する手段とを含むコンピューティングデバイス。
【請求項４２】
コンピューティングデバイス上で前に実行していた前の第１のアプリケーションと関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む、保存されているアプリケーション状態の履歴情報を検索する手段と、
検索されたアプリケーション状態の履歴情報を使用して、コンピューティングデバイス上で前の第１のアプリケーションを再起動する手段とを含むコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概ね、ソフトウェアアプリケーションを再起動すること、より具体的には、多数のソフトウェアアプリケーションの制御された再起動に関する。
【背景技術】
【０００２】
技術における進歩は、より小型で、より強力なパーソナルコンピューティングデバイスをもたらした。例えば、現在、小型で、軽量で、ユーザによって容易に持ち運びされることができる種々の携帯型無線電話、パーソナルディジタルアシスタント（personal digital assistant, PDA）、およびページングデバイスが存在する。一般に、これらのデバイスは、厳しく資源を制約されている。例えば、スクリーンサイズ、使用可能なメモリおよびファイルシステム空間の量、入力および出力能力の量、並びに処理能力は、各々、デバイスの小さいサイズによって制限され得る。
【０００３】
幾つかのデバイスまたはプラットフォームは、アプリケーションの１つのインスタンスのみを可能にする。このような場合は、一度に、アプリケーションの１つのバージョンのみが実行され得る。したがって、１つのインスタンスに限定されている現在実行しているアプリケーションを再実行する試みに応答して、アプリケーションの現在のバージョンを終了し、新しいものを開始しなければならないか、または現在実行しているバージョンが実行を継続することを許されるときは、再実行に対する要求が拒絶されなければならない。
【０００４】
幾つかのデバイスは、マルチプルフレームであり、ユーザに表示される異なるアプリケーションのウインドウイングを可能にしている。このようなデバイスは、一般に、アプリケーションを１つのインスタンスに限定しない。したがって、アプリケーション自体が、自分自身を１つのインスタンスに限定しない限り、デバイスは、システムに、このようなアプリケーションの多数のインスタンスの実行を可能にすることを許す。このようなシステムにおいて、任意の１つの特定のアプリケーションの少なくとも２つのインスタンスが同時にアクティブである状態は、各このようなアプリケーションを現在実行している状態に維持するのに、全システム資源が必要とされることを要求する。他のシステムは、シングルフレームのシステムであり、ここでは、１つのみのアプリケーションが現在のアプリケーションであると見なされる、すなわち、言い換えると、１つのみのアプリケーションが、現在の焦点をもつと見なされる。現在のアプリケーションは、通常、全ユーザの入力および出力の対話を受信し、与える。一般に、このようなシステムは、任意の１時点において、関係付けられたディスプレイ上で１つのみのアプリケーションを見えるようにすることによって特徴付けられる。現在のアプリケーションとして見なされるアプリケーションと、新しい現在のアプリケーションになるように目標にされている新しいアプリケーションとの間で移動（traversal）があると、新しい目標のアプリケーションが、現在のアプリケーションになり、このような目標のアプリケーションが、対応するフレームを埋める。
【０００５】
アプリケーションは、しばしば、異なるモードをもち、ここで、モードは、所与のフレームにおいて見ることができるものを定めている。幾つかのアプリケーションは、多数のモードの中の任意の１つにおいて開始され（マルチモーダル（multi-modal））、一方で、他のアプリケーションは、１つのモードのみにおいて開始され得る(シングルモーダル（single-modal）)。したがって、シングルモーダルのアプリケーションは、常に、同じ１つの予め定められた状態において実行を始める。すなわち、アプリケーションが起動されるときは必ず、アプリケーションは、同じユーザインターフェース(user-interface, U/I)のスクリーンをユーザに表示し、ユーザに同じ機能的動作を与える。例えば、コンピュータゲームは、しばしば、シングルモーダルタイプであるように設計され、起動されるとき、このようなアプリケーションは、ユーザに、ゲームの同じスタートアップビュー、一般に、ゲームの標準開始点を表示する。対照的に、マルチモーダルアプリケーションは、多数の予め定められた状態の中の任意の１つにおいて実行を開始することができるアプリケーションである。したがって、このようなアプリケーションが、希望のモードに依存して、起動されるとき、このようなアプリケーションは、ユーザに、１つの特定の希望のモードおよびアプリケーションの機能の両者を表示する。例えば、幾つかの電子メールプログラムは、マルチモーダルアプリケーションとして設計され、ここでは、１つのモードは、例えば、“作成”モードであり、一方で、別のモードは、例えば、“新しいメールの読み出し”モードである。したがって、電子メールプログラムは、起動されるとき、所与のモードの一方において実行するように開始されなければならない。
【０００６】
マルチモーダルアプリケーションが、１つのインスタンスの環境において起動されるとき、このようなアプリケーションは、それらの所与の多数のモードの１つにおいて実行を開始しなければならない。しかしながら、１つのインスタンスの環境において、異なるモードへの切り換えが望まれるときは、マルチモーダルアプリケーションを再起動して、新しいモードにおいて実行を始めなければならない。再起動されると、前のモードの情報は失われ、したがって、このようなアプリケーションの再実行または再起動時に、検索されることができない。したがって、アプリケーションの異なるモードの各々は、別々のアプリケーションとして与えられなければならず、自分自身のメモリ、ファイルシステム、等の消費を要求する。したがって、異なるモード間における切り換え前に、希望のアプリケーションが実行されていても、同じアプリケーションが、新しいモードにおける別のアプリケーションとして再び実行されなければならない。シャットダウンおよびスタートアップアプリケーションのプロセスは、各々、とくに厳しく資源を制約されたデバイスにおいて、制限された資源を相当に使用することを必要とする。
【０００７】
幾つかのアプリケーションは、ある特定の動的なアプリケーション状態情報が、そのようなアプリケーションの有用性に影響を与え得る多数の状態をもつことが知られている。このような情報は、アプリケーションモードではなく、ユーザインターフェースデータ情報と呼ばれ得る。このようなユーザインターフェースデータ情報は、例えば、このようなアプリケーションを動作しているユーザにとって有用なブラウザアプリケーションからのプログラムの正方向および逆方向のリンク情報を含むことができる。ブラウザが使用され、正方向および逆方向リンクを集めたものが生成されるとき、および新しいブラウザアプリケーションが最初のブラウザアプリケーション内から実行されるとき、新しいブラウザ内の動作は、正方向および逆方向リンクなしに始まり、ユーザが最初のブラウザアプリケーション上で前のリンクに行きたいとき、ユーザは、このような動作を行うオプションを与えられないであろう。
【０００８】
他のアプリケーションを起動するアプリケーションは、一般に、制限された動作能力をもつ。例えば、前の現在のアプリケーションによって呼び出されたアプリケーションが終了するとき、このようなシステムは、前の現在のアプリケーションへの後方追跡(または、再起動)を与えない。同様に、現在のシステムは、前の現在のアプリケーションの任意の再起動のための履歴情報を通さない。現在、例えば、電子メールアプリケーションが、現在、現在のアプリケーションとして“作成”モードで実行している少なくとも１つの電子メールアプリケーションにおいて、このようなモードである間に、デバイスが、新しい電子メールメッセージの受信の通知を受信すると、新しい電子メールアプリケーションが実行され、新しい電子メールが表示される。さらに加えて、少なくとも１つの電子メールアプリケーションにおいて、同じ状況のもとで、アプリケーションは、新しいモードにおいてアプリケーションを実行するのではなく、その代りに、現在のアプリケーションを現在のものとして維持し、電子メール通知メッセージを無視する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、アプリケーションの再起動を支援するデバイスまたはプラットフォーム、あるいはこの両者であって、再起動が、このようなアプリケーションの前の起動と関係付けられている同じモードおよび／または状態情報を使用して、アプリケーションを実行することを含むものが、当技術において必要とされている。さらに加えて、アプリケーションの追加のインスタンスを開始する必要なしに、マルチモードアプリケーションの再起動を支援するデバイスまたはプラットフォームも、当技術において必要とされている。
【課題を解決するための手段】
【００１０】
本明細書に開示されている実施形態は、上述の必要に対処しており、例えば、方法、ソフトウェア、および装置が、アプリケーション状態の履歴情報の保存を含めて、コンピューティングデバイス上でアプリケーションを制御し、実行するのに使用される１つ以上の実施形態を含む。アプリケーション状態の履歴情報は、第１のアプリケーションの実行と関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む。さらに、このような保存されているアプリケーション状態の履歴情報は、第１のアプリケーションの再起動時に、後で使用するために保存される。さらに加えて、このような実施形態には、コンピューティングデバイス上での第２のアプリケーションの起動も含まれる。
【００１１】
少なくとも１つの実施形態では、方法、ソフトウェア、および装置は、保存されているアプリケーション状態の履歴情報を検索するのに使用される。アプリケーション状態の履歴情報は、コンピューティングデバイス上で前に実行した前の第１のアプリケーションと関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含む。さらに加えて、実施形態は、検索されたアプリケーション状態の履歴情報を使用して、コンピューティングデバイス上で前の第１のアプリケーションを再起動する。
【００１２】
少なくとも１つの実施形態では、方法、ソフトウェア、および装置は、コンピューティングデバイス上で実行している第１のアプリケーションを出て、一方で第１のアプリケーションと関係付けられたアプリケーション状態の履歴情報を保存するのに使用される。第２のアプリケーションは、第１のアプリケーションを出ることに応答して起動される。さらに加えて、第２のアプリケーションを出る。第１のアプリケーションと関係付けられた保存されているアプリケーション状態の履歴情報が検索される。コンピューティングデバイス上の第１のアプリケーションは、第２のアプリケーションを出ることに応答して、再起動される。第１のアプリケーションは、検索されたアプリケーション状態の履歴情報を使用して、再起動される。
【００１３】
少なくとも１つの実施形態では、コンピューティングデバイス上で第１のアプリケーションを実行するのに使用される方法、ソフトウェア、および装置を含む。第１のアプリケーションから第２のアプリケーションへの呼び出しが生成される。第２のアプリケーションへの呼び出しを検出することに応答して、第１のアプリケーションを出る。第１のアプリケーションと関係付けられたアプリケーション状態の履歴情報は、第２のアプリケーションへの呼び出しに応答して保存される。さらに加えて、第２のアプリケーションは、第２のアプリケーションへの呼び出しに応答して起動される。実施形態は、第２のアプリケーションの終了を検出する。第１のアプリケーションと関係付けられた保存されているアプリケーション状態の履歴情報は、第２のアプリケーションの終了を検出することに応答して検索される。実施形態は、第２のアプリケーションの終了を検出することに応答して、検索されたアプリケーション状態の履歴情報を使用して、第１のアプリケーションを再起動する。
【００１４】
少なくとも１つの実施形態には、メモリと、メモリに記憶されていて、動的なアプリケーション状態情報を生成するように動作可能なアプリケーションと、アプリケーションが実行されるメモリに記憶されているランタイム環境と、メモリに結合されていて、アプリケーション状態の履歴情報を保存するためのコードを実行するように動作可能なプロセッサとを使用する方法、ソフトウェア、および装置が含まれる。なお、アプリケーション状態の履歴情報は、動的なアプリケーション状態情報の履歴スナップショットを含む。動的なアプリケーション状態情報は、コンピューティングデバイス上で現在実行しているアプリケーションと関係付けられている。実施形態において、アプリケーション状態の履歴情報は、コンピューティングデバイス上で現在実行しているアプリケーションを後で再起動するのに使用される。
【００１５】
少なくとも１つの実施形態は、メモリと、メモリに記憶されていて、動的なアプリケーション状態情報を生成するように動作可能なアプリケーションと、アプリケーションが実行されるランタイム環境と、メモリに結合されていて、保存されているアプリケーション状態の履歴情報を検索するためのコードを実行するように動作可能なプロセッサとを使用する方法、ソフトウェア、および装置を含む。アプリケーション状態の履歴情報は、前の目標のアプリケーションと関係付けられた動的なアプリケーション状態情報の履歴スナップショットを含み、前の目標のアプリケーションは、コンピューティングデバイス上で前に実行していたものである。
【００１６】
少なくとも１つの実施形態の少なくとも１つの長所は、前のモードまたは状態、あるいはこの両者において、前に実行していたアプリケーションへ戻るイグジット（exiting）機能を支援する能力を与えることを含む。さらに、少なくとも１つの実施形態の少なくとも１つの長所は、同じアプリケーションの再起動を試みるときに、現在実行しているプログラムのアクティブな実行を保持する能力を与えることを含む。少なくとも１つの実施形態の少なくとも１つの長所は、異なるモードを使用して、同じアプリケーションを後で呼び出すときに、マルチモーダルアプリケーションの１つのみのインスタンスを維持する能力を与えることを含む。少なくとも１つの実施形態の少なくとも１つの長所は、アプリケーションの実行を開始することなく、前に実行していたアプリケーションへ戻るデバイスの能力と共に、メモリおよびプロセッサの資源を保存すること、およびより良いユーザ経験を与えることを含む。
【００１７】
本発明の他の態様、長所、および特徴は、次のセクション、すなわち、図面の簡単な説明（Brief Description of the Drawing）、発明を実施するための最良の形態(Detailed Description)、および特許請求の範囲(Claims)を含む、出願全体を詳しく調べた後に、明らかになるであろう。
【発明を実施するための最良の形態】
【００１８】
本明細書に記載されている実施形態の上述の態様およびそれに伴う長所は、次の詳細な説明を参照することによって、添付の図面と共に採用するときに、より容易に明らかになるであろう。
【００１９】
“例示的”という用語は、本明細書において、“例、事例、または実例としての役割を果たす”ことを意味するために使用されている。本明細書に記載されている何れの実施形態も、他の実施形態よりも好ましいまたは好都合であると、必ずしも、解釈されると限らない。
【００２０】
次の詳細な記述は、コンピューティングデバイス上でアプリケーションを実行するのに使用される方法、ソフトウェア、および装置を記載しており、アプリケーション状態の履歴情報を使用して、コンピューティングデバイス上でのアプリケーションの実行を制御するための方法、ソフトウェア、および装置を含む。１つ以上の実施形態では、コンピューティングデバイスは、埋め込まれた制御装置および制限された資源(すなわち、制限されたメモリ容量、ディスプレイ領域、およびファイルシステム空間)をもち、コンピューティングデバイスは、常駐アプリケーションの実行を制御するときに、アプリケーション状態の履歴情報を使用するように動作する。
【００２１】
１つ以上の実施形態において、コンピューティングデバイス上でアプリケーションを実行するのに使用されるシステムは、コンピューティングデバイス上で実行しているランタイム環境と対話し、これは、例えば、一般化された呼び出しをデバイス専用の資源に与えることによって、デバイスの動作を単純化するのに使用される。１つのこのようなランタイム環境は、カリフォルニア州サンディエゴのＱＵＡＬＣＯＭＭ，Ｉｎｃ．によって開発されたＢｉｎａｒｙ  Ｒｕｎｔｉｍｅ  Ｅｎｖｉｒｏｍｅｎｔ  ｆｏｒ  Ｗｉｒｅｌｅｓｓ（登録商標）（ＢＲＥＷ）（商標）のソフトウェアプラットフォームである。次の記述では、コンピューティングデバイス上でアプリケーションを実行するのに使用されるシステムは、ＢＲＥＷソフトウェアプラットフォームのような、ランタイム環境を実行するポータブルデバイス上で実施されると仮定される。しかしながら、コンピューティングデバイス上でアプリケーションを実行するのに使用されるシステムの１つ以上の実施形態は、コンピューティングデバイス上でのアプリケーションの実行を制御する他のタイプのランタイム環境で使用するのに適している。
【００２２】
図１は、コンピューティングデバイス100の１つの例示的な実施形態を示している。本明細書において使用されているように、“コンピューティングデバイス”は、メモリに記憶されているソフトウェアモジュールを実行する１つ以上のプロセッシング回路、例えば、マイクロプロセッサ、ディジタル信号プロセッサ（digital signal processor, DSP）、マイクロコントローラ、携帯型無線電話、パーソナルディジタルアシスタント（personal digital assistant, PDA）、ページングデバイス、あるいはハードウェア、メモリに記憶されているソフトウェア、および／またはアプリケーションが維持されているファームウェアの任意の適切な組み合わせを含む。デバイスは、メモリ102、ネットワークのＩ／Ｏインターフェース104、ユーザのＩ／Ｏインターフェース106、プロセッサ108、およびバス110を含んでいる。メモリ102はＲＡＭの１つの連続したユニットとして示されているが、他の実施形態は、メモリ102として、多数の位置および多数のタイプのメモリを使用する。ネットワークのＩ／Ｏインターフェース104は、バス110を介してネットワークに接続された全デバイスへ入力および出力を与える。ユーザのＩ／Ｏインターフェース106は、コンピューティングデバイス100のユーザへ入力および出力を与える。プロセッサ108は、バス110を介して与えられる命令およびデータに対して動作する。
【００２３】
メモリ102内には、第１のアプリケーション112、第２のアプリケーション114、ランタイム環境116、動的なアプリケーション状態情報118、およびアプリケーション状態の履歴情報120が置かれている。第１のアプリケーション112および第２のアプリケーション114は、コンピューティングデバイス100に適合するアプリケーションを表し、ランタイム環境116との対話ができる。既に記載したように、ランタイム環境116は、コンピューティングデバイス上で、例えば、一般化された呼び出しをデバイス専用の資源に与えることによって、デバイスの動作を単純化するように実行する。示されているランタイム環境は、ＢＲＥＷ（商標）であるが、他の例示的な実施形態では、同様の機能性を与える他のランタイム環境116が使用される。
【００２４】
動的なアプリケーション状態情報118は、このようなデバイス上でアプリケーションを実行するときに使用される情報の全てまたは一部を含む。動的なアプリケーション状態情報118は、アプリケーションの実行中に更新されるか、または変更されることができるデータである。このような動的なアプリケーション状態情報118は、特定のアプリケーション識別子、アプリケーションモード情報、ユーザインターフェースデータ情報、並びに可変の、レジスタおよび他の記憶データ構造に記憶され得る他の同様の情報の任意の１つ以上を含み得る。
【００２５】
アプリケーション識別子は、特定のアプリケーションを固有に識別する情報を含んでいる。したがって、一般に、各アプリケーション識別子は、アプリケーションコードの固有の組を表すであろう。しかしながら、１つの例示的な実施形態では、同じコードをもつアプリケーションが、別のアプリケーション識別子を与えられ、その結果、そのアプリケーションは、システムによって互いに全く無関係であるように扱われる。
【００２６】
アプリケーションモード情報は、例えば、同じアプリケーションの異なる別個の機能的側面(例えば、電子メールプログラムの作成モードおよび新しいメールの読み出しモード)を表し、アプリケーションの表示または機能的な動作、あるいはこの両者は、同じアプリケーションの異なる部分間で相当に異なる。前のアプリケーションモードは、例えば、第１のアプリケーション112から第２のアプリケーション114へ呼び出しのために、またはそれを予期して、前に中断されたアプリケーションモードである。一般に、前のモード内容は、第２のアプリケーションから戻るとき、第１のアプリケーションを後で再起動するときに使用するために、アプリケーションの履歴に記憶される。
【００２７】
ユーザインターフェースデータ情報は、例えば、その潜在的な実行に影響を与えるアプリケーションによって生成されるか、または使用される、ほとんどのデータを表す。比較的に重要なユーザインターフェースデータ情報の１つの例は、ブラウザアプリケーションと関連して記憶される情報を含み、これは、ブラウザアプリケーションによって前に訪問されたウェブページを表すリンクのリストを含む。このような情報は、それがプログラムの使用に相当に影響を与えるという点で比較的重要である。例えば、正方向および逆方向リンクは、通常、比較的によく使用され、大抵のブラウザがもっている比較的に非常に貴重な特徴であることが知られている。ユーザインターフェースデータ情報の別の例は、リスト位置マーカを含み、その結果、アプリケーションが再開されると、同じリストを、しかもリスト内の同じ位置を表示し得る。このように、ユーザインターフェースデータ情報は、アプリケーションを出るときに失われるであろう情報であって、対応するアプリケーションの再実行時に自動的にロードされる価値があると考えられ得る種々の情報を含み得る。
【００２８】
アプリケーション状態の履歴情報120は、動的なアプリケーション状態情報118において使用可能な情報のタイプを含む。したがって、アプリケーション状態の履歴情報120は、特定のさらに前の時点に存在していた動的なアプリケーション状態情報118を表す。したがって、アプリケーション状態の履歴情報118は、前の時点からの古くなった動的なアプリケーション状態情報118を反映している。このような情報は履歴であるが、これは、このような情報が、デバイスの現在の状態に等しくないことを意味しているのではなく、むしろ、単に、前の時間における動的なアプリケーション状態情報118の状態を反映する履歴のスナップショットを表し、その後で、デバイスは、通常、このような値を自由に変更する。
【００２９】
示されているように、第１のアプリケーション112、第２のアプリケーション114、およびランタイム環境116は、各々、アプリケーション状態の履歴情報120を保存するためのコード122と、アプリケーション状態の履歴情報120を検索するためのコード124との両者を含むコードのオプションの組を含む。このようなコードは、このようなアプリケーションおよびランタイム環境の各々にオプションで存在することが示されているが、多数の例示的な実施形態は、このようなアプリケーションおよびランタイム環境全体で、このようなコードを任意の組み合わせで置くことを含む。例えば、１つの実施形態では、ランタイム環境116は、アプリケーション状態の履歴情報120を保存するためのコード122と、第１および第２のアプリケーション112および114の両者からのアプリケーション状態の履歴情報120を検索するためのコード124との両者によって呼び出されるモジュールを含む。一般に重要なことは、コードが少なくとも１つの位置に存在すること、およびこのようなコードが、保存および検索の両者を行い、その結果、アプリケーション状態の履歴情報120が、前に実行していたアプリケーションの再実行を制御するのに使用できることである。
【００３０】
最後に、現在のアプリケーションの指標126および前の現在のアプリケーションの指標128も示されている。対応する時間フレームにおいて、例えば、第２のアプリケーション114は現在のものであり、一方で、第１のアプリケーション112は前の現在のアプリケーションである。既に記載したように、コンピューティングデバイス100は、任意の時間点において、１つのみのアプリケーションが現在のものであることを許すので、１つのみのアプリケーション(すなわち、第２のアプリケーション114)が、任意の一時点において現在のアプリケーションであると正しく示すことができる。
【００３１】
図２は、コンピューティングデバイス上でアプリケーションを実行するフローチャートの１つの例示的な実施形態200を示している。具体的には、図２は、このようなアプリケーションを実行するときのアプリケーション状態の履歴情報120の使用を記載している。プロセスは、ステップ202において始まり、ここでは、アプリケーションの最初の実行204が始まる。通常、アプリケーションの最初の実行は、このようなアプリケーションへのやがてやって来る呼び出しの検出またはアプリケーション自体内での命令の実際の実行であると考えられ得る。
【００３２】
ステップ204におけるアプリケーションの最初の実行に続いて、ステップ206において実行のタイプを検出する。ここで、実行が、“起動”であるか、または“再起動”であるかについて判断される。なお、“起動”は、まだ出たことがないアプリケーションへの最初の呼び出しを表し、“再起動”は、後で出るプログラムからのイグジット（exit）からの戻りに基づく、アプリケーションへの後の呼び出しを表す。言い換えると、前のアプリケーションからの逆方向の戻りのために、アプリケーションへの呼び出しが行われるとき、このような動作は、“再起動”であり、一方で、別のアプリケーションからの正方向の呼び出しは、“起動”を表す。
【００３３】
起動が検出されるときは、プロセスは続いて、ステップ208において、動的なアプリケーション状態情報118を最初のデフォルト設定に設定する。ここで、データアプリケーションは、このようなアプリケーションの何れの前の状態の履歴も反映していない最初の状態から開始するように設定されている。しかしながら、再起動が検出されるときは、その代わりに、プロセスは続いて、ステップ210において、アプリケーションは、動的なアプリケーション状態情報118を、対応するアプリケーション状態の履歴情報120に設定し、アプリケーションを前に出たときに提示された設定を反映するアプリケーションの前の状態に初期設定される。しかしながら、他の実施形態は、再起動時に、例えば、アプリケーションが常に最初の設定に初期設定されるときは、動的なアプリケーション状態情報118を、アプリケーションをさらに前に出たときに提示されたデータ以外のデータに割り当てるか、または設定する。起動または再起動ステップ208および210に続くのは、ステップ212におけるアプリケーションの実行を継続するステップである。
【００３４】
アプリケーションがステップ212において実行し続ける一方で、アプリケーションは監視され、ステップ214においてアプリケーションの実行状況の迫っている損失を検出するか、またはステップ218においてアプリケーションの終了を検出する。起動または再起動の検出と同様に、このような検出は、アプリケーション自体の中で、またはその外で行うことができる。１つの実施形態では、実行状況の迫っている損失の検出は、別のアプリケーションへの呼び出しを行なう呼び出しタイプのコマンドと関係付けられたコンピュータの命令によって検出される。別の実施形態では、検出は、ランタイム環境のような現在のアプリケーションの外で、呼び出されたアプリケーションで、または他の同様の位置で行われる。さらに加えて、１つの実施形態は、アプリケーション内のイグジットタイプの命令と関係付けられたコードによって、アプリケーションの終了を検出する。しかしながら、他の実施形態は、ランタイム環境、戻ったアプリケーション、または他の同様の位置において、このような終了を検出する。１つの実施形態では、システムは、実行状況の迫っている損失のアプリケーションを通知する。
【００３５】
ステップ214において実行状況の迫っている損失が検出されると、ステップ216において、動的なアプリケーション状態情報118が、アプリケーション状態の履歴情報120に保存される。ステップ216における動的なアプリケーション状態情報118のこのような保存、またはステップ218におけるアプリケーションの終了の検出に続いて、ステップ220においてプロセスが終わる。
【００３６】
図３は、コンピューティングデバイス100の１つの例示的な実施形態300を、アプリケーションの呼び出しとシステムに関係する情報との間の相互関係を表示するテーブルの形で示している。システムに関係する情報は、４列で示されており、列１には、アプリケーション実行順序302および関係付けられたアプリケーションモード304、列２には、現在実行しているアプリケーション306および対応するアプリケーションモード304、列３には、アクティブなインスタンス308、列４には、アプリケーション状態の履歴情報120があり、これは、前の目標のアプリケーション312、さらに前の目標のアプリケーション314、前のモード情報316、および前のユーザインターフェースデータ情報318を含んでいる。さらに、テーブルの行は、異なる目標のアプリケーション340、342、344および346への、およびそこからの、異なるアプリケーションの呼び出しおよび戻り(320、322、324、326、328、330、332、334、336、および338)、または起動および再起動に対応する異なる状態を反映している。
【００３７】
示されているように、プロセスは、ノード348において始まり、ここでは、電子メールアプリケーション340への呼び出しが、“作成”モード350において開始される。その結果、現在実行しているアプリケーション306は、電子メールアプリケーション340になり、現在のアプリケーションモード304は、“作成”モード350になる。このとき、アクティブなインスタンス308は、電子メールアプリケーション340を含んでおり、一方で、アプリケーション状態の履歴情報120は、空のままである。
【００３８】
次に、現在実行しているアプリケーション306(電子メール340)は、呼び出し322を行って、電子メールアプリケーション340の同じ目標のアプリケーションとしてであるが、“新しいメールの読み出し”352の新しいモードで起動する。これは、例えば、ユーザが新しい電子メールを作成して、送ることを試みているときに行われるが、一方で、このようなプロセスにおいて、新しいメールメッセージを受信する。１つの実施形態では、システムは、同じアプリケーションへの呼び出しを検出し、応答して、電子メールアプリケーション340を、現在実行しているアプリケーション306として維持する。その結果、唯一のアクティブなインスタンス308は、前の電子メールアプリケーション340として留まる。しかしながら、“作成”モード350における電子メールアプリケーション340を出ると、システムは、アプリケーション状態の履歴情報120を、アプリケーション識別子(電子メールアプリケーション340)およびアプリケーションモード(“作成”350)で更新する。
【００３９】
次に、現在実行しているアプリケーション306(電子メールアプリケーション340)は、呼び出し324を行って、目標のアプリケーション(ゲームアプリケーション342)を起動する。これは、例えば、電子メールアプリケーション340が、新しいメールの読み出しモード352であるときに、ゲームアプリケーション342へのリンクを含む電子メールメッセージを表示し、次に、ユーザがゲームアプリケーション342を実行することを選択するときに行われ得る。応答して、ゲームアプリケーション342のための新しいアクティブなインスタンスが、電子メールアプリケーション340のための既にアクティブなインスタンスに加えられる。さらに加えて、アプリケーション状態の履歴情報120は、前の目標のアプリケーション312(電子メールアプリケーション340)および前のモード情報(“新しいメールの読み出し”352)で埋められる。
【００４０】
ゲームアプリケーション342を実行している一方で、ユーザは、例えば、現在のゲームアプリケーション342の実行を取り消すことを要求し、その結果、呼び出し326が実行され、前のモード情報316(“新しいメールの読み出し”モード352)を使用して、前の目標のアプリケーション312(電子メールアプリケーション340)を再起動する。現在実行しているアプリケーション306は、“新しいメールの読み出し”352の現在のモードをもつ電子メールアプリケーション340に設定される。アクティブなインスタンス308として、ゲームアプリケーション342が削除され、唯一の現在アクティブなインスタンス308として、電子メールアプリケーション340を残す。さらに加えて、アプリケーション状態の履歴情報120は、前のモード情報316(“新しいメールの読み出し”)を含む前の目標のアプリケーション312(電子メール)を削除することによって更新される。
【００４１】
次に、“新しいメールの読み出し”モード352における電子メールアプリケーション340に戻って、ユーザは、例えば、ブラウザアプリケーション344のための実行可能なアイコンを含む、電子メールを読み出すことを選択し得る。次に、ユーザは、例えば、ブラウザアプリケーション344へのリンクを実行して、その実行を開始し得る。例えば、１つの実施形態では、実行時に、ブラウザは、ブラウザの電子メールページのデフォルトのホームアプリケーションで、自分自身を初期設定する。現在実行しているアプリケーション306は、ブラウザアプリケーション344になり、アクティブなインスタンス308は、ブラウザアプリケーション344を含むように拡張される。さらに加えて、アプリケーション状態の履歴情報120は、“新しいメールの読み出し”352のアプリケーションモードと共に、電子メールアプリケーション340への新しいエントリを含むように更新される。
【００４２】
１つの実施形態では、ブラウザアプリケーション344は、電子メールページを実行し、ここでは、ユーザは、ワードプロセッサの文書を含む電子メールを読み出す。次に、ユーザは、文書を開き、そうするときに、目標のアプリケーションへの起動330を開始し、ここでは、関係付けられたワードプロセッサ（word processor, WP）のアプリケーション346が実行を始め得る。開始されると、アクティブなインスタンス308は、ワードプロセッサのアプリケーション346の新しいエントリを受信する。さらに加えて、アプリケーション状態の履歴情報120は、ブラウザアプリケーション344のための新しいエントリを、ブラウザの電子メールのページ354と、ブラウザアプリケーション344と関係付けられた逆方向および正方向のリンク356とを識別する情報を含むユーザインターフェースデータ情報と共に含むように更新される。
【００４３】
ワードプロセッサのアプリケーション346内から動作において、イグジットは、システムによって検出される。イグジットを検出すると、システムは、戻りの呼び出し332を実行し、これは、前のユーザインターフェースのデータ情報318を使用して、(ブラウザアプリケーション344への参照を含んでいる)前の目標アプリケーション312を再起動し、その結果、ブラウザアプリケーション344が実行され、ブラウザの電子メールページ354であるウェブページに初期設定され、ここで、関係付けられたブラウザリンクは、さらに前に保存された対応する逆方向および正方向リンク356に設定される。現在実行しているアプリケーション306は、ブラウザアプリケーション344になる。現在アクティブなインスタンス308は、ワードプロセッシングアプリケーション346を削除する。さらに加えて、アプリケーション状態の履歴情報120は、前のＵ／Ｉデータ情報318(ブラウザの電子メールページと、逆方向および正方向リンク)を含む前の目標のアプリケーション312(ブラウザ)を削除して、更新される。
【００４４】
ここで、ブラウザアプリケーション344を実行すると、システムは、そこからのイグジットを検出し得る。イグジットを検出すると、システムは、戻りの呼び出し334を実行し、これは、前のモード情報316を使用して、(現在、電子メールアプリケーション340への参照を含んでいる)前の目標アプリケーション312を再起動し、その結果、電子メールアプリケーション340は、“新しいメールの読み出し”モード352において実行される。現在実行しているアプリケーション306は、電子メールアプリケーション340になる。次に、現在アクティブなインスタンス308は、ブラウザアプリケーション344の削除を経験する。さらに加えて、アプリケーション状態の履歴情報120は、前の目標アプリケーション312の削除で更新される。
【００４５】
電子メールアプリケーション340を実行すると、システムは、そこからイグジットを検出し得る。イグジットを検出すると、システムは、戻りの呼び出し336を実行し、これは、前のモード情報316を使用して、(現在、電子メールアプリケーション340への参照を含んでいる)目標アプリケーション312を再起動し、その結果、電子メールアプリケーション340は、“作成”モード350において再起動される。１つの実施形態では、システムは、電子メールアプリケーションを、同じアプリケーションの再起動が試みられるときに、現在実行しているアプリケーションとして検出し、応答して、このようなアプリケーションを現在のものとして維持し、一方で、単に、新しいモード情報をこのアプリケーションへ送る。現在実行しているアプリケーション306は、電子メールアプリケーション340のままであるが、ここでは、“作成”350のアプリケーションモードをもつ。現在アクティブなインスタンスは、変更されないままである。アプリケーション状態の履歴情報120は、その最後の前の目標のアプリケーション312のエントリを削除して更新される。
【００４６】
最後に、電子メールアプリケーション340を実行する一方で、システムは、そこからの最終的なイグジットを検出し得る。イグジットを検出すると、システムは、イグジット338を実行し、ノード358において、一連のネストにされたアプリケーションの呼び出しを終える。アプリケーション状態の履歴情報が、任意の追加のエントリにないので、システムは、少なくとも、ネストにされた呼び出しの終了に気付く。最後のアプリケーションを出ると、現在実行しているアプリケーション306も、アクティブなインスタンス308もない。
【００４７】
図３には示されていないが、１つの例示的な実施形態は、単に前の、または単に次のアプリケーションに制限されないアプリケーションの起動および再起動を与える。例えば、１つの実施形態では、アプリケーションおよび対応するアプリケーション状態の履歴情報120の全リストは、アプリケーションが現われるリスト内の位置に関係なく選択されるように、ユーザにとって使用可能である。
【００４８】
図４は、コンピューティングデバイス100上でアプリケーションを実行する方法の１つの例示的な実施形態400を示している。具体的には、図４は、ノード402における開始後に、ステップ404が実行される方法を記載しており、ここで、方法は、アプリケーション状態の履歴情報120を保存し、これは、第１のアプリケーション112を後で再起動するときに使用するための、コンピューティングデバイス100上での第１のアプリケーション112の実行と関係付けられた動的なアプリケーション状態情報118の履歴スナップショットを含んでいる。ステップ404に続いて、ステップ406が示されており、ここで、方法は、コンピューティングデバイス100上で第２のアプリケーション114を起動する。第２のステップに続くのは、終了ノード408で示されている方法の終了である。
【００４９】
さらに加えて、図４は、多数のオプションの基準およびステップ408、410、412、414、416、418、420、422、424、426、および428も示している。具体的には、オプションの基準およびステップ408、410、412、414、および416は、各々、ステップ404を変更し、残りのオプションの基準およびステップは、ステップ406を変更する。第１のステップ404は、オプションで変更され（408）、第２のアプリケーション114の起動に依存して保存する。ステップ404は、さらに、オプションで変更され(410)、その結果、アプリケーション状態の履歴情報120は、モード情報416を含み、これは、固有の機能モードに関係する情報の履歴スナップショットを含む。ステップ404は、さらに、オプションで変更され(412)、その結果、アプリケーション状態の履歴情報120は、ユーザインターフェースデータ情報418を含み、これは、動的なユーザインターフェースのデータに関係する情報118の履歴スナップショットを含む。ステップ404は、さらに、オプションで変更され(414)、その結果、アプリケーション状態の履歴情報120は、関係付けられたアプリケーションの、他のアプリケーションに対する連続する順番を示す。ステップ404は、さらに、オプションで変更され(416)、その結果、コンピューティングデバイス100は、無線デバイスである。
【００５０】
ステップ406も、オプションで変更され(418)、さらに、アプリケーションの実行の開始を無視する。ステップ406は、さらに、オプションで変更され(420)、コンピューティングデバイス100上での第１のアプリケーションの実行を選択的に維持する。ステップ406は、さらに、オプションで変更され(420および422)、第１のアプリケーション112と関係付けられたアプリケーション状態の履歴情報120と、第２のアプリケーション114と関係付けられた情報との間における整合情報を検出する。ステップ406は、さらに、オプションで変更され(420、422、および424)、ここでは、整合情報は、アプリケーション識別情報である。ステップ406は、さらに、オプションで変更され(426)、第１のアプリケーション112のための実行状況の迫っている損失を検出することに依存して、起動する。ステップ406は、さらに、オプションで変更され(428)、起動は、第１のアプリケーションによって開始される。
【００５１】
図５は、コンピューティングデバイス100上でアプリケーションを実行する方法の１つの例示的な実施形態500を示している。具体的には、図５は、ノード502における開始後に、ステップ504が実行され、コンピューティングデバイス100上で前に実行した前の第１のアプリケーション112と関係付けられた動的なアプリケーション状態情報118の履歴スナップショットを含む、保存されているアプリケーション状態の履歴情報120を検索する。ステップ504に続くのは、ステップ506であり、ここでは、方法は、検索されたアプリケーション状態の履歴情報118を使用して、コンピューティングデバイス100上で第１のアプリケーション112を再起動する。第２のステップに続くのは、終了ノード508で示されている方法の終了である。
【００５２】
さらに加えて、図５は、多数のオプションの基準およびステップ510、512、514、516、518、520、522、524、および528も示している。具体的には、オプションの基準およびステップ510、512、514、516、および518は、各々、ステップ504を変更し、残りのオプションの基準およびステップは、ステップ506を変更する。第１のステップ504は、オプションで変更され(510)、その結果、アプリケーション状態の履歴情報120は、モード情報304を含み、これは、固有の機能モードに関係する情報の履歴スナップショットを含む。ステップ504は、さらにオプションで変更され(510および512)、モード情報304を使用して、動的なアプリケーション状態情報118を再び初期設定する。ステップ504は、さらにオプションで変更され(514)、その結果、アプリケーション状態の履歴情報は、アプリケーション ユーザ インターフェース データ情報を含み、これは、動的なユーザインターフェースデータに関係する情報の履歴スナップショットを含む。ステップ504は、さらにオプションで変更され(514および516)、アプリケーション ユーザ インターフェース データ情報を使用し、動的なアプリケーション状態情報を再び初期設定する。ステップ504は、さらにオプションで変更され(518)、その結果、コンピューティングデバイス100は無線デバイスである。
【００５３】
ステップ506は、オプションで変更され(520)、任意のアプリケーションの実行の開始を無視する。ステップ506は、さらにオプションで変更され(522)、コンピューティングデバイス100上で現在実行しているアプリケーションを、前の第１のアプリケーション112として選択的に維持する。ステップ506は、さらにオプションで変更され(522および524)、現在実行しているアプリケーションと関係付けられた動的なアプリケーション状態情報と、前の第２のアプリケーションと関係付けられた検索されたアプリケーション状態の履歴情報との間における整合情報を検出する。ステップ506は、さらにオプションで変更され(522、524、および526)、ここでは、整合情報は、アプリケーション識別情報である。ステップ506は、さらにオプションで変更され（528）、アプリケーション状態の履歴情報120を使用して、動的なアプリケーション状態情報118を再び初期設定する。
【００５４】
図６は、コンピューティングデバイス100上でアプリケーションを実行する方法の１つの例示的な実施形態600を示している。具体的には、図６は、ノード602における開始後に、ステップ604が実行され、コンピューティングデバイス100上で実行している第１のアプリケーション112を出る方法を記載している。ステップ604に続くのは、ステップ606であり、ここでは、方法は、第１のアプリケーション112と関係付けられたアプリケーション状態の履歴情報120を保存する。
【００５５】
１つの実施形態では、第１のアプリケーション112が第２のアプリケーション114を呼び出すときのみ、アプリケーション状態の履歴情報120が実際に保存される(すなわち、ネストにされた呼び出しが行われるまで、“返り”の履歴は必要ない)。しかしながら、他の実施形態では、アプリケーションは、呼び出しが第２のアプリケーション114に対して行われる前に、そのような情報を保存する必要を予測することができる(すなわち、アプリケーション状態の履歴情報120を前の目標のアプリケーション情報312で埋める前に、第１のアプリケーション112が第２のアプリケーション114を呼び出すまで待たない)が、このようなシナリオは、不要であったかもしれないメモリの使用および処理時間を必要とするので、効率のより悪いアプローチである。
【００５６】
ステップ606に続くのは、ステップ608であり、ここでは、方法は、第１のアプリケーション112を出ることに応答して、第２のアプリケーション114を起動する。ステップ608に続くのは、ステップ610であり、ここでは、方法は、第２のアプリケーション114を出る。ステップ610に続くのは、ステップ612であり、ここでは、方法は、第１のアプリケーション112と関係付けられた保存されているアプリケーション状態の履歴情報120を検索する。ステップ612に続くのは、ステップ614であり、ここでは、方法は、第２のアプリケーション114を出ることに応答して、検索されたアプリケーション状態の履歴情報120を使用して、コンピューティングデバイス100上で第１のアプリケーション112を再び起動する。ステップ614に続くのは、終了ノード616であり、これは、方法の終了を表わす。
【００５７】
ステップ604、608、および614の３つは、オプションで、４つの追加の制限618、620、622、および624によって変更される。ステップ604は、オプションで変更され(618)、その結果、コンピューティングデバイス100は無線デバイスである。ステップ608は、オプションで変更され(620)、第１のアプリケーション112と第２のアプリケーション114との間における整合するアプリケーション識別情報を検出することに応答して、第１のアプリケーション112の実行を選択的に維持する。ステップ614は、オプションで変更され(622)、第１のアプリケーション112と第２のアプリケーション114との間における整合するアプリケーション識別情報を検出することに応答して、第２のアプリケーション112の実行を選択的に維持する。ステップ614は、さらにオプションで変更され(624)、アプリケーション状態の履歴情報120を使用して、前に出た第１のアプリケーション112と関係付けられた前のアプリケーション状態の履歴情報312で、第１のアプリケーション112を再び初期設定する。
【００５８】
図７は、コンピューティングデバイス100上でアプリケーションを実行する方法の１つの例示的な実施形態700を示している。具体的には、図７は、ノード702における開始後に、ステップ704が実行され、コンピューティングデバイス100上で第１のアプリケーション112を実行する方法を記載している。ステップ704に続くのは、ステップ706であり、ここでは、方法は、第１のアプリケーション112からの第２のアプリケーション114への呼び出しを生成する。ステップ706に続くのは、ステップ708であり、ここでは、方法は、第２のアプリケーション114への呼び出しを検出することに応答して、第１のアプリケーション112を出る。ステップ708に続くのは、ステップ710であり、ここでは、方法は、第２のアプリケーション114への呼び出しに応答して、第１のアプリケーション112と関係付けられたアプリケーション状態の履歴情報120を保存する。ステップ710に続くのは、ステップ712であり、ここでは、方法は、第２のアプリケーション114への呼び出しに応答して、第２のアプリケーション114を起動する。ステップ712に続くのは、ステップ714であり、ここでは、方法は、第２のアプリケーション114の終了を検出する。ステップ714に続くのは、ステップ716であり、ここでは、方法は、第２のアプリケーション114の終了を検出することに応答して、第１のアプリケーション112と関係付けられた保存されているアプリケーション状態の履歴情報120を検索する。ステップ716に続くのは、ステップ718であり、ここでは、方法は、第２のアプリケーション114の終了を検出することに応答して、検索されたアプリケーション状態の履歴情報120を使用して、第１のアプリケーション112を再起動する。ステップ718に続くのは、終了ノード720であり、これは、方法の終了を表す。
【００５９】
ステップ704、712、および718の３つは、オプションで、３つの追加の制限722、724、および726によって変更される。ステップ704は、オプションで変更され(722)、その結果、コンピューティングデバイス100は無線デバイスである。ステップ712は、オプションで変更され(724)、第１のアプリケーション112と第２のアプリケーション114との間における整合するアプリケーション識別情報を検出することに応答して、第１のアプリケーション112の実行を選択的に維持する。ステップ718は、オプションで変更され(726)、第１のアプリケーション112と第２のアプリケーション114との間における整合するアプリケーション識別情報を検出することに応答して、第２のアプリケーション114の実行を選択的に維持する。
【００６０】
当業者は、本明細書に開示されている実施形態に関連して記載されている種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実施され得ることも分かるであろう。ハードウェアとソフトウェアとのこの互換性を明白に示すために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップは、それらの機能性に関して、上述で概ね記載された。このような機能性がハードウェアとして実施されるか、またはソフトウェアとして実施されるかは、システム全体に課された個々の用途および設計の制約に依存する。熟練した技能をもつ者は、各個々の用途のために種々のやり方で、記載された機能性を実施し得るが、このような実施の決定は、本発明の範囲からの逸脱を招くものとして解釈されるべきではない。
【００６１】
本明細書に開示されている実施形態に関連して記載された方法またはアルゴリズムのステップは、ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、または２つの組合せにおいて直接的に具体化され得る。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、取り外し可能ディスク、ＣＤ−ＲＯＭ、または当技術において知られている記憶媒体の何か他の形態の中に存在し得る。例示的な記憶媒体はプロセッサに接続され、プロセッサが記憶媒体から情報を読み出し、かつそこへ情報を書き込むことができるようにする。その代りに、記憶媒体は、プロセッサと一体構成であってもよい。プロセッサおよび記憶媒体は、ＡＳＩＣ内に存在し得る。ＡＳＩＣは、ユーザ端末に存在し得る。その代りに、プロセッサおよび記憶媒体は、ユーザ端末におけるディスクリートな構成要素として存在し得る。
【００６２】
開示された実施形態のこれまでの記述は、当業者が本発明を作成または使用できるようにするために与えられている。当業者には、これらの実施形態に対する種々の変更は容易に明らかになり、本明細書に定められている一般的な原理は、本発明の意図および範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本発明は、本明細書に示されている実施形態に制限されることを意図されず、本明細書に開示されている原理および斬新な特徴に一致する最も幅広い範囲にしたがうことを意図されている。
【図面の簡単な説明】
【００６３】
【図１】アプリケーション状態の履歴情報を使用して、アプリケーションを実行するコンピューティングデバイスの１つの実施形態を示す図。
【図２】アプリケーション状態の履歴情報を使用して、コンピューティングデバイス上でアプリケーションを実行する方法を反映するフローチャートの１つの実施形態を示す図。
【図３】例示的な動的なアプリケーション状態情報のステップごとの内容を含む、コンピューティングデバイス上でアプリケーションを実行する方法を反映するデータテーブルの１つの実施形態を示す図。
【図４】アプリケーション状態の履歴情報の保存、および第２のアプリケーションの起動を含む、コンピューティングデバイス上でアプリケーションを実行する方法の１つの実施形態を示す図。
【図５】アプリケーション状態の履歴情報の検索、および前の第１のアプリケーションの再起動を含む、コンピューティングデバイス上でアプリケーションを実行する方法の１つの実施形態を示す図。
【図６】アプリケーション状態の履歴情報を使用して、コンピューティングデバイス上でアプリケーションを実行する方法の１つの実施形態を示す図。
【図７】アプリケーション状態の履歴情報を使用して、コンピューティングデバイス上でアプリケーションを実行する方法の１つの実施形態を示す図。
【図１】
2008500647.tif 000003
【図２】
2008500647.tif 000004
【図３】
2008500647.tif 000005
【図４】
2008500647.tif 000006
【図５】
2008500647.tif 000007
【図６】
2008500647.tif 000008
【図７】
2008500647.tif 000009
【国際調査報告】
2008500647.tif 000010