(57)【特許請求の範囲】
【請求項１】
モバイルデバイスにおけるワイヤレス通信のための方法であって、
前記モバイルデバイス上の第１のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトすることと、
前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムの伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）スタックに前記要求が到着することを遅延させることと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースすることと、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである、
を備える、方法。
【請求項２】
前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、請求項１に記載の方法。
【請求項３】
前記第１のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、請求項２に記載の方法。
【請求項４】
ラッパーのための命令を実行することであって、前記実行されたラッパーが、前記第１のアプリケーションからの前記要求を前記インターセプトすることを行う、実行することをさらに備える、請求項１に記載の方法。
【請求項５】
前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、請求項４に記載の方法。
【請求項６】
前記第１のアプリケーションを、要求が遅延する種類のアプリケーションとして識別すること
をさらに備える、請求項１に記載の方法。
【請求項７】
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを遅延させることと、
をさらに備える、請求項６に記載の方法。
【請求項８】
前記第１のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第１のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、通信リソースに接続するように前記第１のアプリケーションに命令する、与えることと、
をさらに備える、請求項１に記載の方法。
【請求項９】
前記第１のアプリケーションに関連する第１のタイマーの満了時間を判断することと、
第２のアプリケーションに関連する許容差と第２のタイマーの満了時間とを判断することと、
前記第１のタイマーの前記満了時間と、前記許容差と、前記第２のタイマーの前記満了時間とに基づいて、前記第２のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第１のアプリケーションからの前記要求と前記第２のアプリケーションからのインターセプトされた要求とをリリースすることと、
をさらに備える、請求項１に記載の方法。
【請求項１０】
前記第１のアプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を遅延させることと、
前記デッドラインより前に前記通信リソースに接続するための前記要求をリリースすることと、
をさらに備える、請求項１に記載の方法。
【請求項１１】
前記要求が、前記モバイルデバイスのための通信チャネルを確立するためのシステムコールを備える、請求項１に記載の方法。
【請求項１２】
前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
をさらに備える、請求項１に記載の方法。
【請求項１３】
前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
をさらに備える、請求項１に記載の方法。
【請求項１４】
前記間隔が、ネットワーク中のステートフルインターネットプロトコル（ＩＰ）ミドルボックスにおけるタイムアウト値よりも小さい、請求項１３に記載の方法。
【請求項１５】
ワイヤレス通信のために構成されたモバイルデバイスであって、
プロセッサと、
前記プロセッサと電子通信しているメモリであって、実行可能な命令を記憶しており、オペレーティングシステムを備える、メモリと
を備え、
前記プロセッサが、
前記モバイルデバイス上の第１のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトすることと、
前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに前記要求が到着することを遅延させることと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースすることと、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである、
を行うための命令を実行するように構成された、モバイルデバイス。
【請求項１６】
前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、請求項１５に記載のモバイルデバイス。
【請求項１７】
前記第１のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、請求項１６に記載のモバイルデバイス。
【請求項１８】
前記メモリがラッパーをさらに備え、前記プロセッサが、前記ラッパーに対して命令を実行するようにさらに構成され、前記命令が実行されたとき、前記ラッパーが、前記第１のアプリケーションからの前記要求をインターセプトするように構成された、請求項１５に記載のモバイルデバイス。
【請求項１９】
前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、請求項１８に記載のモバイルデバイス。
【請求項２０】
前記プロセッサは、
前記第１のアプリケーションを、要求が遅延する種類のアプリケーションとして識別すること
を行うための命令を実行するようにさらに構成された、請求項１５に記載のモバイルデバイス。
【請求項２１】
前記プロセッサが、
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを遅延させることと、
を行うための命令を実行するようにさらに構成された、請求項２０に記載のモバイルデバイス。
【請求項２２】
前記プロセッサは、
前記第１のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第１のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、前記通信リソースに接続するように前記第１のアプリケーションに命令する、与えることと、
を行うための命令を実行するようにさらに構成された、請求項１５に記載のモバイルデバイス。
【請求項２３】
前記プロセッサが、
前記第１のアプリケーションに関連する第１のタイマーの満了時間を判断することと、
第２のアプリケーションに関連する許容差と第２のタイマーの満了時間とを判断することと、
前記第１のタイマーの前記満了時間と、前記許容差と、前記第２のタイマーの前記満了時間とに基づいて、前記第２のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第１のアプリケーションからの前記要求と前記第２のアプリケーションからのインターセプトされた要求とをリリースすることと、
を行うための命令を実行するようにさらに構成された、請求項１５に記載のモバイルデバイス。
【請求項２４】
前記プロセッサが、
前記第１のアプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を保留することと、
前記デッドラインより前に前記通信チャネルを確立するための前記要求をリリースすることと、
を行うための命令を実行するようにさらに構成された、請求項１５に記載のモバイルデバイス。
【請求項２５】
前記要求が、通信チャネルを確立するためのシステムコールを備える、請求項１５に記載のモバイルデバイス。
【請求項２６】
前記プロセッサが、
前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
を行うための命令を実行するようにさらに構成された、請求項１５に記載のモバイルデバイス。
【請求項２７】
前記プロセッサは、
前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
を行うための命令を実行するようにさらに構成された、請求項１５に記載のモバイルデバイス。
【請求項２８】
前記間隔が、ネットワーク中のステートフルインターネットプロトコル（ＩＰ）ミドルボックスにおけるタイムアウト値よりも小さい、請求項２７に記載のモバイルデバイス。
【請求項２９】
モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成された装置であって、
前記モバイルデバイス上の第１のアプリケーションからの要求をインターセプトするための手段であって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトするための手段と、
前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに前記要求が到着することを遅延させるための手段と、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースするための手段と、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである、
を備える、装置。
【請求項３０】
前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートするための手段
をさらに備える、請求項２９に記載の装置。
【請求項３１】
前記第１のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、請求項２９に記載の装置。
【請求項３２】
ラッパーを実行するための手段であって、前記実行されたラッパーが、前記第１のアプリケーションからの前記要求をインターセプトするように構成された、実行するための手段
をさらに備える、請求項２９に記載の装置。
【請求項３３】
前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、請求項３２に記載の装置。
【請求項３４】
前記第１のアプリケーションを、要求が遅延する種類のアプリケーションとして識別するための手段
をさらに備える、請求項２９に記載の装置。
【請求項３５】
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別するための手段と、
非クリティカルアプリケーションからの要求のみを遅延させるための手段と、
をさらに備える、請求項３４に記載の装置。
【請求項３６】
モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成されたコンピュータプログラムであって、前記コンピュータプログラムが、
コンピュータに、前記モバイルデバイス上の第１のアプリケーションからの要求をインターセプトさせるためのコードであって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトさせるためのコードと、
前記コンピュータに、前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに前記要求が到着することを遅延させるためのコードと、
前記コンピュータに、トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースさせるためのコードと、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである、
を備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その開示の全体が参照により本明細書に明確に組み込まれる、２０１１年３月１８日に出願された、代理人整理番号第１１１３５４Ｐ１号を有する、Ｇｉａｒｅｔｔａらによる「CONNECTIVITY MANAGEMENT FOR APPLICATIONS ON A USER DEVICE」と題する米国仮特許出願第６１／４５４，４５７号に対する米国特許法第１１９条（ｅ）項に基づく利益を主張する。
【背景技術】
【０００２】
ワイヤレスデバイスに広範囲のアドオンサービスおよび特徴を与えるように動作するアプリケーションまたはデバイスアプレットが現在利用可能である。たとえば、ワイヤレスデバイスは、ショッピング、検索、位置特定、運転ナビゲーション、または一連の他の機能など、付加価値機能を実行するために、デバイスアプレットをダウンロードし、起動することが現在可能である。ネットワークおよびアプリケーションプロバイダは、概して、追加料金でデバイスユーザにこれらのデバイスアプレットを提供する。したがって、デバイスアプレットの使用は、ワイヤレスデバイスの機能性およびユーザビリティを高め得、デバイス自体では元来利用可能でない特徴および利便性をデバイスユーザに提供する。
【０００３】
一般に、ワイヤレスデバイスは、いくつかの無線のいずれかを使用して、１つまたは複数の通信ネットワークとインターフェースする。たとえば、ワイヤレスデバイスは、セルラー、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または他のタイプの無線アクセス技術を使用して通信を提供する様々な無線を含み得る。したがって、ワイヤレスデバイス上で実行しているアプリケーションは、通信チャネルを確立するために無線とインターフェースし、チャネルは、適切なネットワークと通信するためにアプリケーションによって使用される。
【０００４】
アプリケーションは、デバイスがバックグラウンドモードにあるときでも、通信チャネルを確立するためにワイヤレスデバイス上の無線とインターフェースし続け得る。デバイス上にインストールされたアプリケーションの数が増加するにつれて、デバイスがアクティブでない間のネットワーク通信の反復確立により、デバイスのバッテリー電力が不必要に消費され得る。さらに、スマートフォンなどのワイヤレスデバイスの使用が増加するにつれて、通信チャネルのセットアップに関連するネットワークシグナリングによってデータネットワークに過負荷がかかるようになり得る。
【発明の概要】
【０００５】
ネットワークとモバイルデバイス上で実行しているアプリケーションとの間の接続性を管理するための方法、システム、およびデバイスについて説明する。一例では、デバイス上で実行しているアプリケーションからのネットワークアクセスの要求がインターセプトされ得る。たとえば、要求をインターセプトするために、モバイルデバイスのアプリケーションとオペレーティングシステムとの間にラッパーが配置され得る。要求をインターセプトすると、要求は、オペレーティングシステムの伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）スタックに到着することを保留され得る。一例では、要求は、トリガリングイベントが発生したときに、オペレーティングシステムに対してリリースされ得る。要求のキャプチャ、保留、およびリリースは、モバイルデバイスがバックグラウンドモードにあるときに行われ得る。
【０００６】
一構成では、要求は、モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートされ得る。アプリケーションからの要求のインターセプションと、他の要求のインターセプションとは、異なる時間に行われ得る。
【０００７】
一例では、ラッパーのための命令が実行され得る。実行されたラッパーは、第１のアプリケーションからの要求のインターセプションを実行し得る。一構成では、ラッパーは、モバイルデバイスのアプリケーションレイヤとオペレーティングシステムのソケットレイヤとの間に位置し得る。
【０００８】
一構成では、第１のアプリケーションは、要求が保留される種類のアプリケーションとして識別され得る。アプリケーションは、クリティカルアプリケーションまたは非クリティカルアプリケーションとして識別され得る。非クリティカルアプリケーションからの要求のみが保留され得る。
【０００９】
一実施形態では、トリガリングイベントは、タイマーの満了、ディスプレイのステータス変更、マイクロフォンのステータス変更、スピーカーのステータス変更、モバイルデバイスの全地球測位システム（ＧＰＳ）センサーのステータス変更、ユニバーサルシリアルバスポートが使用中であるという指示、モバイルデバイスにオーディオ機器が接続されているという指示、モバイルデバイスにビデオ機器が接続されているという指示、Ｗｉ−Ｆｉタイプのネットワークへの接続が利用可能であるという指示、またはセルラータイプのネットワークへの無線接続が開いているという指示のうちの少なくとも１つを含み得る。
【００１０】
さらに、一例では、第１のアプリケーションの遅延許容差が判断され得る。さらに、判断された遅延許容差に基づいて第１のアプリケーションにコールバック関数が与えられ得る。コールバック関数は、通信リソースに接続するように第１のアプリケーションに命令し得る。
【００１１】
一構成では、第１のアプリケーションに関連する第１のタイマーの満了時間が判断され得る。また、第２のアプリケーションに関連する許容差と第２のタイマーの満了時間とが判断され得る。第２のタイマーは、第１のタイマーの満了時間と、許容差と、第２のタイマーの満了時間とに基づいて満了させられ得る。モバイルデバイスのための通信を行うための第１のアプリケーションからの要求と第２のアプリケーションからのインターセプトされた要求とがリリースされ得る。
【００１２】
一例では、アプリケーションからデッドラインが受信され得る。要求は、デッドラインの前まで保留され得る。通信リソースに接続するための要求は、デッドラインより前にリリースされ得る。一構成では、要求は、モバイルデバイスのための通信チャネルを確立するためのシステムコールを含み得る。要求は、トリガリングイベントを検出すると、オペレーティングシステムのソケットレイヤに対してリリースされ得る。
【００１３】
一実施形態では、要求をリリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示が受信され得る。間隔は、ネットワーク中のステートフルインターネットプロトコル（ＩＰ）ミドルボックスにおけるタイムアウト値よりも小さくなり得る。
【００１４】
また、ワイヤレス通信のために構成されたモバイルデバイスについて説明する。本デバイスは、プロセッサと、プロセッサと電子通信しているメモリとを含み得る。メモリはオペレーティングシステムを含み得る。プロセッサは接続性エンジンを含み得る。エンジンは、モバイルデバイス上の第１のアプリケーションからの要求をインターセプトするようにとの命令を実行するようにさらに構成され得る。要求は、モバイルデバイスのための通信を行うための要求であり得る。エンジンは、モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに要求が到着することを保留することと、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースすることとを行うようにさらに構成され得る。
【００１５】
また、モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成された装置について説明する。本装置は、モバイルデバイス上のアプリケーションからの要求をインターセプトするための手段を含む。要求は、モバイルデバイスのための通信を行うための要求であり得る。本装置は、モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに要求が到着することを保留するための手段と、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースするための手段とをさらに含み得る。
【００１６】
また、モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成されたコンピュータプログラム製品について説明する。本製品は非一時的コンピュータ可読媒体を含み得る。媒体は、モバイルデバイス上のアプリケーションからの要求をインターセプトするためのコードを含み得る。要求は、モバイルデバイスのための通信を行うための要求であり得る。媒体は、モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに要求が到着することを保留するためのコードと、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースするためのコードとをさらに含み得る。
【００１７】
上記では、開示による例の特徴および技術的態様についてやや広く概説した。以下で、追加の特徴について説明する。開示する概念および特定の例は、本開示の同じ目的を実行するための他の構造を変更または設計するための基礎として容易に利用され得る。そのような等価な構成は、添付の特許請求の範囲の趣旨および範囲から逸脱しない。本明細書で開示する概念の編成と動作の方法の両方に関して、それらの概念を特徴づけると考えられる特徴は、添付の図に関連して検討すると以下の説明からより良く理解されよう。図の各々は、例示および説明のみの目的で与えられ、特許請求の範囲の限界を定めるものではない。
【００１８】
以下の図面を参照すれば、本発明の性質のさらなる理解が得られ得る。添付の図において、同様の構成要素または特徴は同じ参照ラベルを有し得る。さらに、同じタイプの様々なコンポーネントは、参照ラベルの後に、ダッシュと、それらの同様のコンポーネント同士を区別する第２のラベルとを続けることによって区別され得る。第１の参照ラベルのみが明細書において使用される場合、その説明は、第２の参照ラベルにかかわらず、同じ第１の参照ラベルを有する同様のコンポーネントのうちのいずれか１つに適用可能である。
【図面の簡単な説明】
【００１９】
【図１】ネットワーク環境のブロック図。
【図２】モバイルデバイスのアーキテクチャを示すブロック図。
【図３】ネットワークアクセスの要求の遅延を提供するモバイルデバイスのブロック図。
【図４】ネットワークアクセスの要求を遅延させるためのモバイルデバイス上のアーキテクチャの例示的なブロック図。
【図５】ネットワークアクセスの要求をアグリゲートするための例示的なタイミング図。
【図６】モバイルデバイス上に実装されたアーキテクチャの一例を示す図。
【図７】ネットワークアクセスの要求を遅延させるための方法の一例を示すフローチャート。
【図８】アプリケーションの分類に基づいてネットワークアクセスの要求を遅延させるための方法の一例を示すフローチャート。
【図９】いくつかのモバイルデバイスから受信されたネットワークアクセスの要求をアグリゲートするための方法の一例を示すフローチャート。
【図１０】データ接続要求を同期させるための方法の一例を示すフローチャート。
【図１１】３つのアプリケーションが接続要求を周期的に開始するタイミング図。
【図１２】接続要求のいくつかが同期された、図１１のタイミング図。
【図１３】３つのアプリケーションが接続要求を周期的に開始するタイミング図。
【図１４】接続要求のいくつかが同期された、図１３のタイミング図。
【詳細な説明】
【００２０】
モバイルデバイス上にインストールされたアプリケーションからの要求をインターセプトするための方法、システム、およびデバイスについて説明する。要求は、モバイルデバイスのための通信チャネルを確立するシステムコールであり得る。「要求」および「システムコール」という用語は互換的に使用され得る。要求は、キャプチャされ、モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに到着することを保留され得る。インターセプトされた要求は、他のインターセプトされた要求とアグリゲートされ得る。アグリゲートされた要求は、一緒にバンドルされ、モバイルデバイス上でトリガリングイベントを検出するのとほぼ同時にオペレーティングシステムに対してリリースされ得る。アプリケーションからの要求のキャプチャ、保留、およびアグリゲーションは、モバイルデバイスがバックグラウンドモードにあるときに行われ得る。
【００２１】
スマートフォン、携帯情報端末などのモバイルデバイスでは、ソフトウェアアプリケーションは、ユーザがデバイスをアクティブに使用していなくても動作し続け得る。ソーシャルネットワーキングアプリケーション、電子メールまたは他の通信アプリケーション、データフィードなどのアプリケーション（普及している例には、Ｆａｃｅｂｏｏｋ（登録商標）、Ｇｍａｉｌ（登録商標）、Ｔｗｉｔｔｅｒ（登録商標）などがある）は、ユーザがデバイスを使用していなくても、データを送信および受信し続け得る。非アクティビティ動作モードの下でさえ、デバイスが表面上は使用中でないときでも動作し続けるアプリケーションにより、アクティビティにおける電力消費およびスパイク(spikes)が発生し得る。これらのアプリケーションによるアクティビティは、外部ネットワークによって与えられるような通信リソースを利用し得る。
【００２２】
アプリケーションは、バックグラウンドモードから接続モードへのモバイルデバイスによる頻繁な遷移をトリガし得るか、あるいはアプリケーションは、場合によっては、デバイスがバックグラウンドモードに入ることまたは間欠受信(discontinuous reception)（ＤＲＸ）などの他の代替接続モードに入ることに干渉し得る。ユーザがデバイスをアクティブに操作していないときの、アプリケーションによる無線アクティビティのこれらの高いレベルは、バッテリー寿命の早期の消耗、無線ネットワークの負荷の望ましくない増加、または他の望ましくない影響をもたらし得る。
【００２３】
モバイルデバイスは、デバイスのいくつかの入力が使用可能でないときまたはスリープ状態にあるとき、バックグラウンドモードにあり得る。言い換えれば、デバイスは、ユーザがデバイスを使用していないとき、バックグラウンドモードにあり得る。たとえば、（マイクロフォンなどの）オーディオ入力がオフであるとき、デバイスはバックグラウンドモードにあると見なされ得る。さらに、（デバイスのディスプレイなどの）ビジュアル入力がオフであるとき、デバイスはバックグラウンドモードにあると判断され得る。以下で説明するように、モバイルデバイスがバックグラウンドモードにあるか否かを判断するために追加の入力が使用され得る。
【００２４】
ネットワークとモバイルデバイス上で実行しているアプリケーションとの間の接続性の管理について説明する。モバイルデバイス上にインストールされたいくつかのアプリケーションが、デバイスがバックグラウンドモードにあるときにネットワークへのアクセスを要求したとき、不必要な量のネットワークシグナリングが発生し得る。たとえば、第１のアプリケーションが、通信チャネルを確立するためにシステムコールを開始し得、次いで、データが送信／受信された後、チャネルは中止され得る。次いで、第２のアプリケーションが、データを送信／受信するための通信チャネルを同じく確立するためにシステムコールを開始し得る。通信チャネルが確立されるたびに、ネットワークの利用可能な帯域幅が減少するように、ネットワークシグナリングの量は増加し得る。さらに、いくつかのアプリケーションが、デバイスがバックグラウンドモードにある間にネットワークへのアクセスを要求したとき、不必要な量のバッテリー電力が消費され得る。通信チャネルが確立されるたびに、モバイルデバイスがアクティブモードに入ったとき、利用可能な電力がより少なくなるように、バッテリー電力は減少し得る。したがって、本システムおよび方法は、ネットワークシグナリングを低減し、バッテリー電力を温存するために、ネットワークアクセスの要求を保留し、アグリゲートし得る。前述のように、これは、デバイスがアクティブでないときに行われ得る。さらに、システムコールの保留およびアグリゲーションは、デバイスのバッテリー電力があるしきい値量を下回るときに行われ得る。トリガリングイベントが発生した（たとえば、デバイスがアクティブモードに入った）とき、アグリゲートされた要求は、ネットワークシグナリングの量を低減するため、ならびに各別個の要求に関連するバッテリー電力の消費を低減するために一緒にリリースされ得る。
【００２５】
要求の保留およびアグリゲーションは、ユーザによるデバイスの使用に干渉しないように、モバイルデバイスが非アクティブモードにあるときに実行され得る。一例では、ユーザデバイス上のアプリケーションからのネットワークアクセスの要求がインターセプトされ得る。たとえば、要求をインターセプトするために、モバイルデバイスのアプリケーションレイヤとデバイスのオペレーティングシステムレイヤとの間にラッパーが配置され得る。一例では、ラッパーは、要求をインターセプトするソフトウェアエンティティであり得る。ラッパーは、アプリケーションレイヤ中のアプリケーションならびにオペレーティングシステムレイヤ中のオペレーティングシステムに対して透過的(transparent)であり得る。要求をインターセプトすると、要求は、オペレーティングシステムに到着することを保留または遅延され得る。一構成では、要求は、アプリケーションレイヤ中の追加のアプリケーションから受信された他のインターセプトされた要求とアグリゲートされ得る。トリガリングイベントが検出されたとき、アグリゲートされた要求はオペレーティングシステムに対してリリースされ得る。したがって、ラッパーは、要求を透過的にインターセプトし得、アグリゲートし得、次いで、追加の処理が完了したとき、アグリゲートされた要求を中継し得る。
【００２６】
さらに、保留された要求がデバイスのオペレーティングシステムに対してどのくらいの頻度でリリースされるべきかを示す間隔が判断され得る。間隔は、以下で説明するミドルボックスの状態を維持するように判断され得る。一例では、インターネットプロトコル（ＩＰ）ホストはステートフルミドルボックスによって分離され得る。ステートフルミドルボックスは、ファイアウォールおよびネットワークアドレス変換（ＮＡＴ）機能を実行し得る。ファイアウォールの機能は、デバイスのどのインバウンド／アウトバウンドポートが開いているかまたは利用可能であるかを判断することであり得る。ＮＡＴ機能は、セルラーネットワーク上で常に展開されるとは限らないが、ＬＡＮ／ＷＬＡＮ上で連続的に展開され得る。モバイルデバイス上で実行しているアプリケーションは、セルラーネットワークとＷｉ−Ｆｉネットワークとを区別しないことがあり、したがって、アプリケーションは、セルラーネットワーク上でＮＡＴ機能を動作可能にしておくための「キープアライブ」要求を発信するためにタイマーを使用し得る。ミドルボックスの状態は、タイマーが満了するまで維持され得る。長寿命（long-lived）接続（ＴＣＰまたはＵＤＰ）が必要とされる場合、ミドルボックスは、それらの状態を接続全体にわたって保ち得る。モバイルデバイス（たとえば、スマートフォン）上で実行しているアプリケーションは、（Ｗｉ−Ｆｉネットワークとは対照的に）セルラーネットワークには適合されないことがある。したがって、これらのアプリケーションは、間隔がセルラーネットワークのためのシグナリングのピークを生じるかどうかにかかわらず、どこでも働くキープアライブ／再接続間隔を選択し得る。したがって、以下で、デバイスがバックグラウンドモードにある間、ネットワークアクセスの要求を保留することと、あるトリガリングイベントが発生したときに、または特定のネットワークによって判断された間隔において要求をリリースすることとによって、ネットワークアクセスのためのシステムコールの数を低減して、電力を温存し、シグナリングを低減するためのシステムおよび方法について説明する。
【００２７】
以下の説明は、例を与えるものであり、特許請求の範囲において記載される範囲、適用性、または構成を限定するものではない。本開示の趣旨および範囲から逸脱することなく、説明する要素の機能および構成において変更が行われ得る。様々な実施形態は、適宜に様々なプロシージャまたはコンポーネントを省略し得、置換し得、または追加し得る。たとえば、説明する方法は、説明する順序とは異なる順序で実行され得、様々なステップが追加され得、省略され得、または組み合わせられ得る。また、いくつかの実施形態に関して説明する特徴は、他の実施形態において組み合わせられ得る。
【００２８】
次に図１を参照すると、ブロック図にワイヤレスネットワーク環境１００の例が示されている。ネットワーク環境１００は、モバイルデバイス１０２と通信ネットワーク１１５とを含み得る。デバイス１０２は、いくつかの無線チャネル１１０−ａを使用してネットワーク１１５と通信し得る。たとえば、制御チャネル１１０−ａ−１は、デバイス１０５とネットワーク１１５との間に確立され得る。さらに、他のタイプのチャネル１１０−ａ−２〜１１０−ａ−ｎも確立され得る。これらの他のタイプのチャネルは、データチャネル、ボイスチャネルなどを含み得る。
【００２９】
動作中、デバイス１０２は、いくつかの無線のいずれかを使用してネットワーク１１５とインターフェースし得るアプリケーションを実行し得る。たとえば、実行アプリケーションは、ネットワーク１１５との通信を確立するための要求を発行し得る。一例では、要求は、ソケットレイヤコールなどのネットワーキングシステムコールであり得る。要求は、デバイス１０５上のオペレーティングシステムのソケットレイヤに宛てられ(be intended)得る。従来のデバイスは、一般に、これらのタイプの要求が、処理されるためにオペレーティングシステムに直接進むことを可能にする。要求を受信すると、従来のデバイスは、データ接続セットアッププロシージャを通して制御チャネル１１０−ａ−１を確立するためにネットワークシグナリングプロセスを開始する。データ接続セットアッププロシージャがモバイルデバイス１０５上で実行されるとき、バッテリー電力が消費され、ネットワークにわたるシグナリングのレベルが増加し得る。これは、モバイルデバイス１０５およびネットワーク１１５の効率を低下させ得る。
【００３０】
一構成では、デバイス１０５は、オペレーティングシステムに対する要求のリリースを遅延させるためのアーキテクチャを含み得る。このアーキテクチャは、アプリケーションからのネットワークアクセスの要求をインターセプトし得る。要求をインターセプトすると、アーキテクチャは、要求がオペレーティングシステムのＴＣＰ／ＩＰスタックに到着することを保留するかまたは遅延させ得る。ＴＣＰ／ＩＰスタックは、オペレーティングシステムに組み込まれ得る通信プロトコルを含み得、オペレーティングシステムに、ネットワークを介してデータを送信するための規格を与え得る。インターセプトされた要求は、追加のアプリケーションから受信されたネットワークアクセスの他のインターセプトされた要求とアグリゲートされ得る。アグリゲートされた要求は、一緒にバンドルされ得、ネットワークアクセスの単一の要求としてリリースされ得る。別の例では、アグリゲートされた要求は、特定のイベント（たとえば、モバイルデバイスがアクティブになる）の発生時にリリースされ得る。一構成では、インターセプトすることと、保留することと、アグリゲーションとに関係する上記で説明したアーキテクチャは、デバイス１０５が非アクティブモードにあるときに使用され得る。
【００３１】
図２に、図１のモバイルデバイス１０５の一例であり得るモバイルデバイス１０５−ａのアーキテクチャ２００の一例を示す。デバイス１０５−ａのアーキテクチャ２００は接続性エンジン２２５を含み得る。接続性エンジン２２５は、デバイス１０５−ａ上のアプリケーションレイヤ２２０中で実行しているアプリケーションが、図１のネットワーク１１５などのネットワークにいつアクセスし得るかを管理し得る。アプリケーションレイヤ２２０は、様々な機能を与えることと、無線ユニット２４５の１つまたは複数の無線２５０−ａを使用して、ネットワーク１１５などの外部ネットワークと通信することとを実行し得るアプリケーションを含み得る。
【００３２】
一構成では、接続性エンジン２２５はラッパー２３０を実行し得る。一例では、ラッパー２３０は、アプリケーションレイヤ２２０中のアプリケーションから発生したネットワークアクセスのためのシステムコールをインターセプトし得る。ラッパー２３０は、デバイス１０５−ａ上で実行しているオペレーティングシステム２３５に要求が到着することを保留し得る。ラッパー２３０はまた、インターセプトされたシステムコールを追加のアプリケーションからインターセプトされた他のシステムコールとアグリゲートし得る。ラッパー２３０は、アグリゲートされたシステムコールがオペレーティングシステム２３５のソケットレイヤ２４０に到着することを保留し得る。ネットワークアクセスのためのシステムコールがソケットレイヤ２４０に到着したとき、無線２５０−ａのうちの１つまたは複数を使用して通信チャネルを確立するためのプロセスが開始され得る。ソケットレイヤ２４０は、要求を処理し得、要求を開始したアプリケーションとネットワーク１１５との間の接続を確立するために接続セットアッププロシージャを開始するように特定の無線に通知し得る。たとえば、ソケットレイヤ２４０は、特定のアプリケーションと無線、たとえば無線１  ２５０−ａ−１との間のバインディングを確立するためにコール（または要求）を発行し得る。無線１  ２５０−ａ−１は、図１の制御チャネル１１０−ａ−１の一例であり得る制御チャネルを確立することによって、接続セットアッププロシージャを開始するための信号をネットワーク１１５に送信することを開始し得る。
【００３３】
アプリケーションがネットワークアクセスのためのシステムコールを与えるたびにセットアッププロシージャを開始するのではなく、アグリゲートされた要求がソケットレイヤ２４０に対して一緒にリリースされたときに、要求を送ったアプリケーションと特定の無線２５０−ａとの間の接続を確立するためにソケットレイヤ関数が１回開始され得る。選択された無線は、次いで、ネットワーク１１５と要求を発信したアプリケーションとのデータ接続を確立するために、ネットワークシグナリングを開始し得る。
【００３４】
したがって、デバイスアーキテクチャ２００は、デバイス１０５−ａ上で実行しているアプリケーションによる、ネットワークにアクセスするためのシステムコールのアグリゲーションを提供する。アグリゲーションは、ソケットレイヤ２３５に対していくつかのシステムコールをバンドルとしてリリースすることによって、バッテリー消費量とネットワークシグナリングとを低減するのに役立ち得る。
【００３５】
図３に、ネットワークアクセスの要求の保留とアグリゲーションとを実装するモバイルデバイス１０５−ｂのブロック図３００を示す。デバイス１０５−ｂは、図１または図２のデバイス１０５の一例であり得る。デバイス１０５−ｂは、通信バス３１４を使用して通信するようにすべて結合されたプロセッサ３６０、メモリ３５５、アプリケーションレイヤ２２０、ラッパー２３０、接続性エンジン２２５、オペレーティングシステム２３５、および無線ユニット２４５を含み得る。メモリ３５５は、アプリケーションレイヤ２２０と、ラッパー２３０と、オペレーティングシステム２３５とを記憶し得る。プロセッサ３６０は接続性エンジン２２５を含み得る。接続性エンジン２２５は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェアコンポーネント、あるいは本明細書で説明する機能を実行するように設計されたそれらの任意の組合せとして実装され得る。接続性エンジン２２５は、モバイルデバイス上のアプリケーションからの要求をインターセプトするための手段と、要求がモバイルデバイス上のオペレーティングシステムに到着することを保留するための手段と、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースするための手段とを含み得る。さらに、接続性エンジン２２５は、要求を、モバイルデバイス１０５のための通信を行うための他のインターセプトされた要求とアグリゲートするための手段を含み得る。接続性エンジン２２５はまた、図２、図３、または図４のラッパー２３０を実行するための手段を含み得る。実行されたラッパーは、アプリケーションからの要求をインターセプトし得る。さらに、エンジン２２５は、アプリケーションを、要求が保留される種類のアプリケーションとして識別するための手段を含み得る。さらに、接続性エンジン２２５は、アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別するための手段と、非クリティカルアプリケーションからの要求のみを保留するための手段とを含み得る。デバイス１０５−ｂは一実装形態にすぎず、他の実装形態が可能であることに留意されたい。
【００３６】
一態様では、プロセッサ３６０は、中央処理ユニット（ＣＰＵ）、プロセッサ、ゲートアレイ、ハードウェア論理、メモリ要素、および／またはソフトウェアを実行するハードウェアのうちの少なくとも１つを含む。プロセッサ３６０は、アプリケーションレイヤ２２０において実行しているアプリケーションによって開始されたネットワークアクセスのためのシステムコールが、オペレーティングシステム２３５に到着することを保留され得、他のシステムコールとアグリゲートされ得るように、デバイス１０５−ｂの動作を制御するように動作する。一実装形態では、プロセッサ３６０は、いくつかの機能のいずれかを実行することに関係するコンピュータ可読命令を実行し得る。たとえば、プロセッサ３６０は、ネットワークアクセスの要求のインターセプションおよびアグリゲーションを実現するために、デバイス１０５−ｂから受信または通信された情報を分析するように動作し得る。別の態様では、プロセッサ３６０は、いくつかのアプリケーションからのネットワークアクセスのためのシステムコールのアグリゲーションを実現するために、メモリ３５５、無線ユニット２４５、アプリケーションレイヤ２２０、ラッパー２３０、オペレーティングシステム２３５、および／または接続性エンジン２２５によって利用され得る情報を生成するように動作し得る。
【００３７】
無線ユニット２４５は、デバイス１０５−ｂを、いくつかのチャネル１１０−ａを使用する外部通信ネットワークなど、いくつかの外部エンティティにインターフェースするために使用され得るいくつかの無線／インターフェースを与え得る、ハードウェアおよび／またはソフトウェアを実行するプロセッサを含み得る。たとえば、無線ユニット２４５は、セルラー、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ、またはチャネル１１０−ａを使用して通信ネットワークと通信するための他の技術を使用して通信するための無線／インターフェースを与え得る。
【００３８】
アプリケーションレイヤ２２０は、デバイス１０５−ｂ上の１つまたは複数のアプリケーションを記憶および／または実行し得る、ハードウェアおよび／またはソフトウェアを実行するプロセッサを含み得る。一実装形態では、アプリケーションレイヤ２２０は、アプリケーションが、外部ネットワークまたはシステムと通信する目的で無線／インターフェースへの接続を要求するなど、ネットワーキングサービスを要求するためにネットワーキング関数呼出しを開始することを可能にし得る。
【００３９】
オペレーティングシステム２３５はソケットレイヤを含み得る。ソケットレイヤは、ソケットレイヤ関数を実行し得る、ハードウェアおよび／またはソフトウェアを実行するプロセッサを含み得る。一実装形態では、ソケットレイヤ関数は、Ｃｏｎｎｅｃｔ（）、Ｂｉｎｄ（）、およびＳｅｔｓｏｃｋｏｐｔ（）などの関数を含み得る。Ｃｏｎｎｅｃｔ（）関数は、アプリケーションと特定の無線／インターフェースとの間の接続を確立するように動作する。たとえば、特定の無線／インターフェースは、無線ユニット２４５によって与えられたいくつかの候補無線から選択され得る。一態様では、ソケットレイヤは、様々なソケットレイヤ関数またはコマンドを実行し得る。
【００４０】
接続性エンジン２２５は、モバイルデバイス１０５−ｂ上で実行しているアプリケーションからのネットワークアクセスの要求をラッパーにインターセプトさせるためにラッパー２３０を実行し得る、ハードウェアおよび／またはソフトウェアを実行するプロセッサを含み得る。ラッパー２３０はまた、インターセプトされた要求がオペレーティングシステム２３５に到着することを保留し得る。さらに、ラッパー２３０は、インターセプトされた要求を他のインターセプトされた要求とアグリゲートし得る。アグリゲートされた要求は、トリガリングイベントが発生した（たとえば、モバイルデバイス１０５−ｂがアクティブモードに入った）ときにオペレーティングシステムのソケットレイヤに対してリリースされ得る。
【００４１】
接続性エンジン２２５は、ラッパー２３０に、様々な方法でネットワークアクセスの要求をキャプチャさせ得、保留させ得、アグリゲートさせ得る。たとえば、デバイス１０５−ｂがバックグラウンドモードにあるとき、（ラッパー２３０を介して）接続性エンジン２２５は、デバイス１０５−ａ上で実行しているいくつかのアプリケーションからのいくつかの要求をインターセプトし得る。インターセプトされた要求は、一緒にアグリゲートされ得、あるトリガリングイベントが発生するまで保留され得る。たとえば、要求は、モバイルデバイス１０５−ｂがアクティブ状態に入ったときにリリースされ得る。一構成では、現在保留されているアグリゲートされた要求は一緒にリリースされ得る。たとえば、アグリゲートされた要求は、バンドルされ得、単一のシステムコールとしてソケットレイヤに対して一緒にリリースされ得る。ソケットレイヤは、ネットワーク１１５とのデータ接続のために通信チャネルを確立するためのプロシージャを開始し得る。
【００４２】
メモリ３５５は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、または情報がデバイス１０５−ｂにおいて記憶され、取り出されることを可能にするように動作する他のタイプのメモリデバイスを含み得る。一実装形態では、メモリ３５５は、プロセッサ３６０によって実行されるコンピュータ可読命令を記憶し得る。メモリ３５５はまた、プロセッサ３６０、無線ユニット２４５、アプリケーションレイヤ２２０、ラッパー２３０、オペレーティングシステム２３５、および／または接続性エンジン２２５のいずれかによって生成されたデータを含む、いくつかの他のタイプのデータのいずれかを記憶し得る。メモリ３５５は、ランダムアクセスメモリ、バッテリーバックの(battery-backed)メモリ、ハードディスク、磁気テープなどを含む、いくつかの異なる構成を含み得る。また、圧縮および自動バックアップなど、様々な特徴がメモリ３５５上に実装され得る。
【００４３】
様々な実装形態では、デバイス１０５−ｂは、非一時的コンピュータ可読媒体上に記憶されるかまたは非一時的コンピュータ可読媒体上で実施される１つまたは複数のプログラム命令（「命令」）または「コード」のセットを有するコンピュータプログラム製品を含み得る。少なくとも１つのプロセッサ、たとえば、プロセッサ３６０および／または接続性エンジン２２５によってコードが実行されたとき、それらの実行は、プロセッサ３６０および／または接続性エンジン２２５に、本明細書で説明するアグリゲーションアーキテクチャの機能を与えるようにデバイス１０５−ｂを制御させ得る。たとえば、非一時的コンピュータ可読媒体は、フロッピー（登録商標）ディスク、ＣＤＲＯＭ、メモリカード、フラッシュメモリデバイス、ＲＡＭ、ＲＯＭ、あるいはデバイス１０５−ｂとインターフェースする他のタイプのメモリデバイスまたはコンピュータ可読媒体であり得る。別の態様では、コードのセットは、外部デバイスまたは通信ネットワークリソースからデバイス１０５−ｂにダウンロードされ得る。コードのセットは、実行されたとき、本明細書で説明するシステムコールアグリゲーションアーキテクチャの態様を与えるように動作する。
【００４４】
図４に、上記で説明したように、ネットワークアクセスの要求をインターセプトし、アグリゲートするために有用なモバイルデバイス１０５−ｃ上のアーキテクチャの例示的なブロック図４００を示す。モバイルデバイス１０５−ｃは、図１、図２、または図３のモバイルデバイス１０５の一例であり得る。
【００４５】
図示のように、ブロックは、アプリケーションプロセッサ４９０とモデムプロセッサ４９５との間で分割されるが、様々な機能は、図４の例とは別様に編成され得る。アプリケーションレイヤ２２０は、アプリケーション接続エンジン（ＡＰＰ  ＣｎＥ）４７５およびソケットレイヤ２４０と対話し得る。アプリケーション接続エンジン４７５はモデム接続エンジン（モデムＣｎＥ）４８５と通信し得る。モデム接続エンジンは、無線ユニット２４５およびその中のいくつかの無線２５０−ａなど、通信リソースを管理し得る。ラッパー２３０は、アプリケーションプロセッサ４９０においてアプリケーションレイヤ２２０とオペレーティングシステムのソケットレイヤ２４０との間で実行され得る。ラッパー２３０は、アプリケーションレイヤ２２０とソケットレイヤ２４０との間で受け渡されるデータをキャプチャし得る。たとえば、ラッパー２３０は、アプリケーションレイヤ２２０から送られ、ソケットレイヤ２４０に宛てられたシステムコールをインターセプトするために、アプリケーション２２０とソケットレイヤ２４０との間に配置され得る。一構成では、ラッパー２３０は、デバイス１０５−ｃによる非アクティビティ期間中にアプリケーションレイヤ２２０からのシステムコールをインターセプトし得、ラッパーは、ソケットレイヤ２４０に対してシステムコールをリリースする前に、トリガリングイベントが発生するまでインターセプトされたコールを保留し得る。システムコールは、無線ユニット２４５内の無線２５０を使用して通信チャネルを確立するための要求であり得る。
【００４６】
別の例では、ラッパー２３０は、デバイス１０５−ｃによる非アクティビティ期間中にアプリケーションレイヤ２２０からインターセプトされたシステムコールをアグリゲートし得る。ラッパー２３０は、動作／送信のためにソケットレイヤ２４０および最終的に無線ユニット２４５に対してアグリゲートされたシステムコールをリリースする前に、特定のイベントが発生するまで、インターセプトされ、アグリゲートされたコールを保留し得る。
【００４７】
一構成では、ラッパー２３０は、アプリケーションが、それらの要求がソケットレイヤ２４０に到着することを保留されていることに気づかないように、アプリケーションレイヤ２２０にあるアプリケーションにとって不可視であり得る。ラッパー２３０は、別個のソフトウェアコンポーネントであり得るか、あるいは接続性エンジン２２５またはアプリケーション接続エンジン４７５などの別のコンポーネントに組み込まれ得る。
【００４８】
図５に、第１のアプリケーションおよび第２のアプリケーションなど、いくつかのアプリケーションのためのタイミング図５００を示す。アプリケーションは、モバイルデバイス１０５のアプリケーションレイヤ２２０中に設置され得る。タイミング図５００は、図２または図３の接続性エンジン２２５の実装の結果であり得る。一構成では、第１の要求５０５−ａ−１が、時間ｔ0において第１のアプリケーションから送られ得る。第１の要求５０５−ａ−１はＣｏｎｎｅｃｔ（）システムコールであり得る。第１の要求５０５−ａ−１は、モバイルデバイス上で実行しているオペレーティングシステム２３５に到着することを保留され得る。たとえば、第１の要求は、オペレーティングシステムのＴＣＰ／ＩＰスタックに到着することを保留され得る。要求が保留される時間はＨ0として表され得る。第１の要求５０５−ａ−１は、時間ｔ2においてオペレーティングシステム２３５に対してリリースされ得る。
【００４９】
一例では、第２の要求５０５−ａ−２が、時間ｔ1において第２のアプリケーションから送られ得る。時間ｔ1は時間ｔ0の後であり得る。第２の要求５０５−ａ−２もＣｏｎｎｅｃｔ（）システムコールであり得る。第２の要求５０５−ａ−２は、Ｈ1として表されるある時間期間の間、オペレーティングシステム２３５に到着することを保留され得る。たとえば、第２の要求も、オペレーティングシステムのＴＣＰ／ＩＰスタックに到着することを保留され得る。第２の要求５０５−ａ−２は、時間ｔ2においてリリースされ得る。したがって、第１の要求５０５−ａ−１および第２の要求５０５−ａ−２は、一緒にまたは同時（すなわち時間ｔ2）にリリースされ得る。時間期間Ｈ1は、時間期間Ｈ0よりも少なくなり得る。言い換えれば、第２の要求５０５−ａ−２は、第１の要求５０５−ａ−１よりも少ない時間の間保留され得る。
【００５０】
一構成では、時間期間Ｈ0中に、第２の要求５０５−ａ−２が時間ｔ1においてインターセプトされたとき、第１の要求は第２の要求５０５−ａ−２とアグリゲートされ得る。要求のアグリゲーションは、両方の要求が実質的に同じ時間（すなわち、時間ｔ2）にリリースされることを可能にする。したがって、タイミング図５００は、異なる時間（ｔ0およびｔ1）に送られた要求が、異なる時間期間（Ｈ0およびＨ1）の間保留され得、次いで、同時（ｔ2）にリリースされ得ることを示す。
【００５１】
図６に、モバイルデバイス１０５−ｄ上で実装され得るアグリゲーションアーキテクチャの一例を示す。モバイルデバイス１０５−ｄは、図１、図２、図３、および図４のモバイルデバイス１０５の一例であり得る。図示のように、デバイス１０５−ｄは、アプリケーションレイヤ２２０−ａと、ラッパー２３０−ｂと、オペレーティングシステム２３５とを含み得る。オペレーティングシステム２３５はソケットレイヤ２４０を含み得る。図２または図３の接続性エンジン２２５は、ラッパー２３０−ｂソフトウェアを実行するようにとの命令を実行し得る。一構成では、デバイス１０５−ｄはバックグラウンドモードにあり得る。モバイルデバイス１０５−ｄは、たとえば、デバイス１０５−ｄのスクリーンまたはディスプレイがオフであるとき、デバイス１０５−ｄのマイクロフォン、スピーカー、または他のオーディオ出力がオフであるとき、デバイス１０５−ｄ中の全地球測位システム（ＧＰＳ）機構が、デバイス１０５−ｄは静止していると判断したとき、デバイスのバッテリーレベルがあるしきい値レベルを下回るときなど、バックグラウンドモードにあると見なされ得る。
【００５２】
一例では、アプリケーションレイヤ２２０−ａにおいて実行しているいくつかのアプリケーション６０５−ａは、Ｃｏｎｎｅｃｔ（）システムコールなど、ネットワークアクセスのためのシステムコール５０５−ａを送り得る。システムコール５０５−ａは、異なる時間に各アプリケーションから送られ得る。ラッパー２３０−ｂは、これらの要求をキャプチャし得、オペレーティングシステム２３５に到着することを保留し得る。特に、コールは、オペレーティングシステム２３５のソケットレイヤ２４０に到着することを保留され得る。一構成では、アグリゲーションモジュール６１０は、インターセプトされたシステムコール５０５−ａをアグリゲートし得る。アグリゲートされた要求は、ラッパー２３０−ａ−１からオペレーティングシステム２３５のソケットレイヤ２４０に対して一緒に（または実質的に同じ時間に）リリースされ得る。アグリゲートされた要求を受信すると、ソケットレイヤ２４０は、続いてネットワーク１１５との接続を確立し得る。プロシージャは、制御チャネル１１０−ａ−１を確立するために、モバイルデバイス１０５−ｄとネットワーク１１５との間でシグナリングメッセージを送信することを含み得る。
【００５３】
したがって、ネットワークアクセスの要求のインターセプション、保留、およびアグリゲーションは、複数のシステムコールが、異なる時間にソケットレイヤ２４０において実行されないので、モバイルデバイス１０５−ｄの電力消費量を低減し得る。代わりに、複数の要求が一緒にバンドルされ、ほぼ同時にソケットレイヤ２４０に対してリリースされる。さらに、要求のアグリゲーションは、ネットワーク１１５との接続セットアッププロシージャの頻度を低減し、したがって、ネットワークトラフィックを低減し得る。
【００５４】
アプリケーション６０５−ａからの要求の保留およびアグリゲーションは、選択的に行われ得る（すなわち、ユーザが中断され得ないように実装され得る）。通信チャネルを確立するためのアプリケーション６０５−ａからの要求をいつ保留し、アグリゲートすべきかを判断するために、様々なファクタが採用され得る。たとえば、要求をインターセプトするという判断は、スクリーンがオフである、またはオーディオ出力がオフであるなど、モバイルデバイス１０５−ｄのいくつかの特性に基づいて行われ得る。要求を保留することは、無線がロードされないとき、さもなければモバイルデバイス１０５−ｄが使用中でない（通話、オーディオストリーミングなどがない）ときに、そのような遅延を処理することが可能であるとわかっているアプリケーションのみに対して実装され得る。アプリケーションからのシステムコールのインターセプションおよび保留は、ユーザが、アプリケーションによって与えられるサービスに登録する(subscribes)かどうかに基づいて実装され得る。ユーザがサービスに登録する場合、アプリケーションからの要求は、オペレーティングシステムに到着することを保留されないことがある。代わりに、このサブスクリプションベースのアプリケーションからの要求は、ソケットレイヤに直ちに受け渡すことが可能にされ得る。一例では、モバイルデバイス１０５−ｄ上で実行しているアプリケーションは分類され得る。たとえば、第１のアプリケーション６０５−ａ−１は非クリティカルアプリケーションとして分類され得、第２のアプリケーション６０５−ａ−２はクリティカルアプリケーションとして分類され得る。非クリティカルアプリケーションは、ある遅延許容差をもつアプリケーションであり得る。言い換えれば、通信チャネルを確立するための非クリティカルアプリケーションからのシステムコールは遅延され得る。しかしながら、クリティカルアプリケーションは、遅延許容差がほとんどまたはまったくないアプリケーションであり得る。クリティカルアプリケーションの例には、限定はしないが、子供追跡アプリケーション、緊急ベースのアプリケーション、サブスクリプションベースのアプリケーションなどがあり得る。一構成では、要求の保留およびアグリゲーションは、非クリティカルアプリケーションから発生した要求に対して行われ得る。クリティカルアプリケーションから送られた要求は、保留（またはアグリゲート）されないことがあり、代わりに、オペレーティングシステムのソケットレイヤに直接進み得る。保留およびアグリゲーションはまた、上記のファクタまたは他のファクタの組合せを利用して実装され得る。
【００５５】
さらに、アグリゲートされた要求をいつリリースし、アプリケーション接続性を許可すべきかを判断するために、様々なファクタが採用され得る。たとえば、データ接続セットアッププロシージャを確立するためのトリガ（遅延され得ない緊急アプリケーションなどのクリティカルアプリケーションからのシステムコールを受信することなど）がある場合、通信チャネルが緊急アプリケーションに関連して確立され得、バックグラウンド状態と接続状態との間の遷移の数を低減し得るように、保留された要求がソケットレイヤ２４０に対してリリースされ得る。別の例は、より望ましい無線（たとえば、ワイドローカルエリアネットワーク（ＷＬＡＮ）無線）がアクティブ化されるかまたはデフォルトとして選択されたとき、アグリゲートされた要求がリリースされ得ることである。要求はまた、無線チャネルが極めて良好である場合（たとえば、高い信号強度、ＳＮＲ、または他の望ましいパフォーマンスメトリック）、リリースされ得る。要求はまた、あらかじめ決定されたように、またはモバイルデバイス１０５−ｄによって選択的に判断されたように、周期的にリリースされ得る。知られずに(incognito)動作するために要求をリリースするための別のヒューリスティック(heuristic)は、（ユーザがスクリーンをオンにする前に）ユーザがデバイスに接近したときであり得る。この例では、加速度計が、ユーザが電話をつかんだことを検出し得るか、またはユーザ近接度センサーが、ユーザが接近していることを示し得る。別の態様では、バッテリーで稼動している間、要求は、スクリーンがアンロックされるとすぐに（たとえば、ＰＩＮが正しく入力された後に）リリースされ得る。この態様では、ランダムなボタンが押された（デバイス１０５−ｄが財布またはポケットの中にある）ときには要求のリリースは行われ得ない。
【００５６】
一例では、保留された要求をリリースさせるトリガリングイベントは、タイマーの満了であり得る。イベントはまた、ディスプレイのステータス変更であり得る。たとえば、ディスプレイは、「オフ」状態から「オン」状態に変化し得る。マイクロフォンのステータス変更（オフからオン）もトリガイベントになり得る。さらに、ＧＰＳセンサーのステータス変更がトリガリングイベントになり得る。たとえば、センサーがモバイルデバイスの移動を検出したとき、センサーは状態を変更し得る。要求をリリースするための追加のトリガリングイベントは、ユニバーサルシリアルバスポートが使用中であるという指示、またはオーディオ機器がデバイスに接続されているという指示を含み得る。さらに、ビデオ機器がモバイルデバイスに接続されているという指示も、モバイルデバイスのオペレーティングシステムに対して保留された要求をリリースするためのトリガリングイベントとして働き得る。さらに、あるネットワークへの接続が利用可能であるという指示が、要求のリリースをトリガし得る。たとえば、Ｗｉ−Ｆｉタイプのネットワークへの接続の指示が、要求をリリースさせ得る。同様に、セルラータイプのネットワークへの無線接続がすでに開いているという指示も、デバイスのオペレーティングシステムに対する要求のリリースをトリガし得る。さらに別の態様では、要求は、上記または他のファクタの何らかの組合せに従ってリリースされ得る。上記の説明は、ＡＰＩアーキテクチャに関するものであるが、概念は、ハードウェア、ファームウェア、またはハードウェアおよびソフトウェアの任意の組合せにおいて等しく適用され得る。
【００５７】
一構成では、アプリケーションはタイマーに関連付けられ得る。タイマーの満了前の時間期間は、関連するアプリケーションの許容差レベルを示し得る。たとえば、許容差を受け入れないタイマーは「ハードタイマー」と呼ばれることがある。ハードタイマーは、比較的固定された時点において満了するように意図されたタイマーであり得る。逆に、許容差値を受け入れるタイマーは「ソフトタイマー」になり得る。ソフトタイマーは、意図された満了時間において満了し得るが、指定された許容差範囲内での満了をも可能にし得る。一例として、電子メール更新サービスなどのいくつかのアプリケーションは、接続要求が明確な固定時間に行われることを必要としないことがある。したがって、そのようなアプリケーションのためのタイマーは広い許容差を与えられ得、ソフトタイマーが生成され、そのようなアプリケーションに関連付けられ得る。逆に、株式トレーダーによって使用される株式プログラムは、株価情報の精度を保証するために、固定時間における一貫した更新を必要とし得る。そのようなアプリケーションは、許容差をほとんどまたはまったく受け入れないことがあり、したがってハードタイマーに関連付けられるであろう。
【００５８】
一例では、ソフトタイマーまたはハードタイマーのうちの１つなどのタイマーが満了しようとしていることがある。満了時間が識別されると、たとえば、図２または図３の接続性エンジン２２５は、満了時間が様々なアプリケーションのいずれかのソフトタイマーの許容差内に入るかどうかを判断し得る。許容差が満了時間内に入るすべてのソフトタイマーに対して、接続性エンジンは、それらのタイマーを早期に満了させるようにとの命令を実行し得る。タイマーが満了したアプリケーションからのインターセプトされたネットワークアクセス要求は、モバイルデバイスのオペレーティングシステムに対してリリースされ得る。いくつかの構成では、タイマーが満了したアプリケーションの各々が、それらの必要な通信アクティビティを完了するまで、ネットワーク接続は開いたままになり得る。タイマーが満了したときに通信要求が行われるので、アプリケーションによる通信システムの共用の結果として、リソース管理がより効率的になる。
【００５９】
上述のように、要求がどのくらいの頻度でリリースされるべきかを示す間隔またはリフレッシュレートが判断され得る。間隔は、ファイアウォールおよびＮＡＴ機能を実行するミドルボックスの状態を維持するように判断され得る。ミドルボックスの状態は、アプリケーションがキープアライブメッセージまたは一連のより短い接続要求を発行することによって維持され得る。一構成では、ネットワークは、モバイルデバイス上のミドルボックスの状態を維持するための最小リフレッシュレートに関する情報を与え得る。リフレッシュレートは、ＵＤＰ対ＴＣＰ接続について与えられ得る。ネットワークは、キープアライブ／再接続メッセージの量に起因して発生した無線負荷に基づいて、ミドルボックスにおけるリフレッシュレートを適応させ得る。たとえば、キープアライブメッセージの数があるしきい値を上回る場合、ミドルボックスにおける状態は、より長い時間期間の間維持され得、モバイルデバイスのためのリフレッシュレートはスローダウンされ得る。間隔（またはリフレッシュレート）は、ステートフルミドルボックスにおけるタイムアウト値よりも小さくなり得る。したがって、モバイルデバイスは、ネットワークによって示されたリフレッシュレート（または間隔）に従って、アップリンクに対してゲートを開き得る（すなわち、要求をリリースし得る）。ゲートは、デバイスがバックグラウンドモードにないときには開かれ得、モバイルデバイスがバックグラウンドモードにあるときには閉じられ得る。
【００６０】
図７は、ネットワークアクセスの要求を保留するための方法７００の一例を示すフローチャートである。明快のために、方法７００について、図１、図２、図３、または図４に示したモバイルデバイス１０５に関して以下で説明する。一実装形態では、プロセッサ３６０は、以下で説明する機能を実行するためにデバイス１０５の機能要素を制御するためのコードの１つまたは複数のセットを実行し得る。一構成では、以下で説明する方法７００は、デバイス１０５がバックグラウンドモードにあるときに実装され得る。
【００６１】
ブロック７０５において、モバイルデバイス１０５上のアプリケーションからの要求をインターセプトする。要求は、モバイルデバイス１０５のための通信チャネルを確立するなど、モバイルデバイスのための通信を行うための要求であり得る。要求は、モバイルデバイス１０５のアプリケーションレイヤ２２０において実行しているアプリケーションから送られ得る。一例では、要求は、アプリケーションが、ネットワーク１１５などの外部ネットワークとインターフェースすることを可能にするために、データ接続セットアッププロシージャを開始するための要求であり得る。たとえば、要求は、モバイルデバイス１０５上のオペレーティングシステム２３５のソケットレイヤ２４０に対するシステムコールであり得る。
【００６２】
ブロック７１０において、モバイルデバイス１０５上で実行しているオペレーティングシステム２３５に要求が到着することを保留され得る。たとえば、要求は、オペレーティングシステム２３５のソケットレイヤ２４０に到着することを保留され得る。一構成では、ラッパー２３０が要求をインターセプトし得、保留し得る。
【００６３】
ブロック７１５において、トリガリングイベントを検出すると、オペレーティングシステムに対して要求がリリースされ得る。たとえば、デバイス１０５は、上記で説明したようにアクティブモードに入り得る。
【００６４】
したがって、方法７００は、モバイルデバイス１０５のアプリケーションレイヤ２２０において実行しているアプリケーションによってサブミットされたネットワークアクセスの要求のインターセプションおよび保留を提供し得る。方法７００は一実装形態にすぎないこと、および方法７００の動作は、他の実装形態が可能であるように、並べ替えられるかまたは場合によっては変更され得ることに留意されたい。
【００６５】
図８は、モバイルデバイス上で実行している非クリティカルアプリケーションからのネットワークアクセスの要求をインターセプトするための方法８００の一例を示すフローチャートである。明快のために、方法８００について、図１、図２、図３、または図４に示したデバイス１０５に関して以下で説明する。一実装形態では、プロセッサ３６０は、以下で説明する機能を実行するためにデバイス１０５の機能要素を制御するためのコードの１つまたは複数のセットを実行し得る。
【００６６】
ブロック８０５において、ネットワークアクセスの要求がインターセプトされる。要求は、モバイルデバイス１０５のアプリケーションレイヤ２２０において実行しているアプリケーションから送られ得る。一例では、要求は、ネットワーク１１５などの外部ネットワークとの通信チャネルを確立するための要求であり得る。要求は、デバイス１０５上のオペレーティングシステム２３５のソケットレイヤ２４０に対するシステムコールであり得る。要求を受信すると、ソケットレイヤ２４０は、通信チャネルを確立するためのプロシージャを開始し得、チャネルが確立されたとき、アプリケーションにコールバック関数を与え得る。
【００６７】
ブロック８１０において、デバイス１０５がバックグラウンドモードにあるかどうかに関する判断が行われ得る。たとえば、デバイス１０５が電源切断されているかどうか、スリープモードにあるかどうかなどに関する判断が行われ得る。デバイス１０５はまた、たとえば、デバイス１０５のディスプレイが非アクティブである場合、オーディオ出力が非アクティブである場合など、バックグラウンドモードにあると判断され得る。デバイス１０５−ａが非アクティブであると判断された場合、ブロック８１５において、システムコールを開始したアプリケーションが非クリティカルアプリケーションであるかどうかを判断するための第２の判断が行われ得る。クリティカルアプリケーションは、ネットワークアクセスのための優先権をもつ緊急アプリケーション、サブスクリプションベースのアプリケーション、遅延についての低い許容差をもつアプリケーションなどであり得る。
【００６８】
デバイス１０５がアクティブであること、またはアプリケーションがクリティカルアプリケーションであることが判断された場合、要求は、オペレーティングシステム２３５のソケットレイヤ２４０に対してリリースされ得る。言い換えれば、要求は、ソケットレイヤが、ネットワーク１１５との通信チャネルを確立するためのプロシージャを開始することを可能にするためにリリースされ得る。デバイスがバックグラウンドモードにあること、およびアプリケーションが非クリティカルアプリケーションとして分類されることが判断された場合、ブロック８２０において、要求がオペレーティングシステムに到着することを保留し得、したがって、通信チャネルをセットアップするためのプロシージャの開始を遅延させる。
【００６９】
ブロック８２５において、要求が他のインターセプトされた要求とアグリゲートされ得る。他の要求は、モバイルデバイス１０５上で実行している追加のアプリケーションによって開始され得る。ブロック８３０において、上記で説明したように、トリガリングイベントが検出されたかどうかに関する判断が行われ得る。トリガリングイベントが検出されないと判断された場合、方法８００は、インターセプトされたネットワークアクセスの要求をアグリゲートし続けるために戻り得る。しかしながら、トリガリングイベントが検出されたと判断された場合、ブロック８３５において、オペレーティングシステム２４０のソケットレイヤ２４０に対してアグリゲートされた要求がリリースされ得る。言い換えれば、いくつかのアプリケーションからのシステムコールが保留され得、一緒にバンドルされ得、次いで、ソケットレイヤ２４０に対して単一のシステムコールとしてリリースされ得る。
【００７０】
したがって、方法８００は、モバイルデバイス１０５上で実行している非クリティカルアプリケーションからのネットワークアクセスの要求をインターセプトすることと、保留することと、アグリゲートすることとを提供し得る。要求を保留し、アグリゲートすることによって、いくつかのシステムコールが、一緒にバンドルされ得、単一のシステムコールとしてリリースされ得る。これにより、通信チャネルをセットアップするためのプロシージャを開始するためのシステムコールの量が低減され得るので、モバイルデバイス１０５のためのバッテリー電力が節約され得、ならびにネットワークシグナリングが低減され得る。方法８００は一実装形態にすぎないこと、および方法８００の動作は、他の実装形態が可能であるように、並べ替えられるかまたは場合によっては変更され得ることに留意されたい。
【００７１】
図９は、モバイルデバイス上で実行しているいくつかのアプリケーションからのネットワークアクセスの要求をインターセプトするための方法９００の一構成を示すフローチャートである。明快のために、方法９００について、図１、図２、図３、または図４に示したデバイス１０５に関して以下で説明する。一実装形態では、プロセッサ３６０は、以下で説明する機能を実行するためにデバイス１０５の機能要素を制御するためのコードの１つまたは複数のセットを実行し得る。
【００７２】
ブロック９０５において、第１の時間において第１のアプリケーションからのネットワークアクセスの第１の要求がインターセプトされる。一例では、ブロック９１０において、第２の時間において第２のアプリケーションからの第２の要求がインターセプトされ得る。第２の時間は第１の時間とは異なり得る。ブロック９１５において、第３の時間において第３のアプリケーションからの第３の要求がインターセプトされ得る。一構成では、第３の時間は、第１の時間および第２の時間とは異なり得る。インターセプトされた要求は、ネットワークアクセスのために通信チャネルを確立するためのシステムコールであり得る。アプリケーションは、モバイルデバイス１０５上で実行していることがある。
【００７３】
要求がインターセプトされたとき、ブロック９２０において、モバイルデバイス１０５がバックグラウンドモードにあるかどうかに関する判断が行われ得る。デバイス１０５がバックグラウンドモードにあると判断された場合、ブロック９２５、９３０、および９３５において、要求がオペレーティングシステムに到着することを保留し得る。デバイス１０５がアクティブモードにある場合、ブロック９５０において、モバイルデバイス１０５上のオペレーティングシステム２３５のソケットレイヤ２４０に対して要求がリリースされ得る。
【００７４】
一構成では、ブロック９４０において、第１、第２、および第３の要求が一緒にアグリゲートされ得またはバンドルされ得る。ブロック９４５において、トリガリングイベントが発生したかどうかに関する判断が行われ得る。たとえば、デバイスがアクティブモードに入ったかどうか、デバイス上のディスプレイがアクティブ化されたかどうか、デバイスがロケーションを変更したかどうか、ユーザがデバイスの近くにいるかどうかなどに関する判断が行われ得る。トリガリングイベントが検出されない場合、方法９００は、トリガリングイベントの検出のための監視を続けるために戻り得る。トリガリングイベントが検出された場合、ブロック９５０において、オペレーティングシステムのソケットレイヤに対してアグリゲートされた要求がリリースされ得る。要求を受信すると、ソケットレイヤは、ネットワーク１１５などの外部ネットワークとの通信チャネルを確立するためのプロシージャを開始し得る。
【００７５】
したがって、方法９００は、モバイルデバイス１０５上で実行している複数のアプリケーションからのネットワークアクセスの要求をインターセプトすることと、保留することと、アグリゲートすることとを提供し得る。したがって、いくつかのシステムコールが、一緒にバンドルされ得、単一のシステムコールとしてリリースされ得る。これにより、システムコールの量が低減され得るので、モバイルデバイス１０５のためのバッテリー消費量が低減され、ならびにネットワークシグナリングが低減され得る。方法９００は一実装形態にすぎないこと、および方法９００の動作は、他の実装形態が可能であるように、並べ替えられるかまたは場合によっては変更され得ることに留意されたい。
【００７６】
図１０に、ネットワークアクセス要求などのアプリケーション接続要求の間の同期を改善するための、いくつかの実施形態において実装される１つの可能なプロセス１０００を示す。以下の例で説明するように、いくつかの実施形態がモバイルデバイス上のプロセス１０００を実装し得る。明快のために、方法１０００について、図１、図２、図３、または図４に示したデバイス１０５に関して以下で説明する。一実装形態では、図２または図３のプロセッサ３６０または接続性エンジン２２５は、以下で説明する機能を実行するためにデバイス１０５の機能要素を制御するためのコードの１つまたは複数のセットを実行し得る。
【００７７】
本方法は、ブロック１００５において、ソフトタイマーまたはハードタイマーのうちの１つなどの第１のタイマーが満了しようとしている可能性があることを識別することによって開始する。これは、様々なアプリケーションのタイマーをポーリングする中央システムによって達成され得る。代替的に、各アプリケーションは、それ自体のタイマーを個々に監視し、タイマーの満了時に通知を与え得る。
【００７８】
満了時間が識別されると、ブロック１０１０において、同じく満了し得る追加のタイマーが識別されるかどうかに関する判断を行う。たとえば、第１のタイマーの満了時間がソフトタイマーの許容差内に入るかどうかに関する判断が行われ得る。許容差が満了時間内に入るすべてのソフトタイマーに対して、ブロック１０１５において、追加のタイマーを早期に満了させ得る。ブロック１０２０において、満了タイマーに関連するアプリケーションのためのデータが同期され得る。たとえば、接続を形成することによって、タイマーが満了したアプリケーションにチャネルアクセスが与えられ得る。いくつかの実施形態では、次いで、タイマーが満了したアプリケーションの各々がそれらの必要な通信アクティビティを完了するまで、接続は開いたままになり得る。タイマーが満了したときに通信要求が行われるので、アプリケーションによる通信システムの共用の結果として、リソース管理がより効率的になる。方法１０００は、ブロック１００５において、タイマーが満了するのを再び待つことによって無期限に実行され得るか、または本方法は終了し得る。
【００７９】
ブロック１００５において、意図された時間において最初に満了した１つまたは複数のタイマーは、いくつかの実施形態では、「マスタタイマー」と呼ばれ得るか、または互換的に「トリガイベント」と呼ばれ得る。すなわち、これらのタイマーは、他のタイマー（「ソフトタイマー」）がそれらのそれぞれの許容差に基づいていつ満了し得るかを規定する。したがって、ソフトタイマーまたはハードタイマーは、マスタタイマーとして働き得る。しかしながら、（ソフトタイマーのみが許容差を所有するので）ソフトタイマーのみがマスタタイマーによって影響を及ぼされ得る。
【００８０】
図１１に、３つのアプリケーション（Ａｐｐ１、Ａｐｐ２、およびＡｐｐ３）の各々の１つの可能な一連の接続要求を示す。これらのアプリケーションは、図１、図２、図３、または図４のモバイルデバイス１０５などのモバイルデバイス上で実行され得る。特に、図１１は、様々なアプリケーションからの通信要求に基づいて接続を形成するための技法を表す。この例では、接続要求は協調されない。したがって、各アプリケーションは、他のアプリケーションからの非協調間隔において接続を要求する。協調のこの欠如は、アプリケーションが接続を共有する機会を無視するので、モバイルデバイスのリソースの使用が非効率的になる。タイマー満了は、各時点における縦の矢印によって表され、結果として生じる要求期間は矩形によって示される。各接続期間は、３０秒間の幅をもつ要求期間矩形中のウィンドウによって表される（これは、かなり恣意的な持続時間として認識され、はるかに短いかまたは長い持続時間が各接続について発生し得る）。この幅は説明のためのものにすぎず、実際のデバイスでは任意の幅が存在し得る。図１１の数値範囲ならびに後続の図は、説明のために選択されたものにすぎない。これら図は、必ずしも、いずれかのシステムまたは実施形態の実際の実装を表すものとして解釈すべきではない。
【００８１】
図１１では、Ａｐｐ１は、５分ごとに通信要求を開始し得る（時間１、６、１１、１６などにおける接続）。同様に、Ａｐｐ２は、５分ごとに、ただしＡｐｐ１から１分だけオフセットされて接続要求を開始し得る。すなわち、Ａｐｐ２の要求は、Ａｐｐ１の要求と同じ期間を共有するが、同じ位相は共有しない。最後に、Ａｐｐ３は、１０分ごとに接続を実行し得、同様にＡｐｐ１から４分だけずれている。Ａｐｐ１、Ａｐｐ２、およびＡｐｐ３の非同期接続要求は、接続が常に起動および停止されるので、バッテリー電力および通信帯域幅の使用が非効率的になる。この例では、通信システムとの（モバイルデバイスの通信要素の再アクティブ化を必要とする）１４個の別個の接続が、時間６と時間３２との間に行われる。
【００８２】
本実施形態のうちのいくつかは、より効率的な接続パターンが生じるように接続要求を協調させ得るシステムを提供することを企図する。たとえば、モバイルデバイス１０５が、１つのアプリケーションのためにネットワークとの接続をすでに有する場合、モバイルデバイス１０５は、その接続をティアダウンすること(tearing down)、および別の接続を形成することなしに、別のアプリケーションのために同じ接続を使用し得る。したがって、アプリケーションが接続を共有するようにアプリケーション接続要求間のタイミングを協調させることは、形成される必要がある接続の数を低減し得る。これらの実施形態のいくつかは、アプリケーション開発者が、モバイルデバイス１０５上で動作するプラットフォームのためのアプリケーションを実装するときに使用し得るプログラミングモジュールを含み得る。これらの実施形態のいくつかでは、モバイルデバイス１０５は、スケジューリングについての情報をネットワークに送信し得る。多くの実施形態では、モバイルデバイス１０５上で実行しているアプリケーションは、「タイマー」、すなわち、特定の「満了時間」がいつ発生したかを判断するように構成されたソフトウェア、ファームウェア、またはハードウェアモジュールを含み得る。タイマーは、図２または図３の接続性エンジン２２５によって実行され得る。タイマーは、接続性エンジン２２５の一部として実装され得る。これらのタイマーは、アプリケーションがその間に接続を必要とし得る時間または時間間隔を示す。ネットワークからの周期的更新を必要とする（または、ネットワークに情報を周期的に送信する）アプリケーションは、それらが接続をいつ要求すべきかを判断するために、これらのタイマーに依拠し得る。アプリケーションはまた、データを非周期的に必要とし得、タイマーによって定義されたある時間内にデータを要求し得る。いくつかのアプリケーションは、それらがどのくらいの頻度で接続を必要とするかにおいてフレキシブルであり得る。本実施形態のいくつかは、各アプリケーションに関連するフレキシビリティまたはその欠如に適応するために、異なるタイプまたは構成のタイマーを企図する。以下の説明では、説明しやすいように、「タイマー」を有するものとしてアプリケーションに言及するが、当業者は、アプリケーションが、１つまたは複数のタイマーにそれら自体で個々に関連し得る多くのコンポーネントを備えることを認識されよう。
【００８３】
図１２は、図１１からのアプリケーションのためのタイミング図を表すが、ここで、アプリケーションは、図１０の方法などのプロセスに関連してソフトタイマーまたはハードタイマーのいずれかを採用する。上記で説明したように、アプリケーションは、図１、図２、図３、または図４のモバイルデバイス１０５などのモバイルデバイス上で実行し得る。さらに、図２または図３の接続性エンジン２２５が、スケジューリングを協調させるためにプロセス１０００を実装し得る。図１２の例では、アプリケーション（Ａｐｐ１、Ａｐｐ２、およびＡｐｐ３）の各々は、２分間の許容差をもつソフトタイマーを含む。プロセス１０００などのプロセスがない場合に、図１１で発生したであろうタイマー満了が、破線の矢印によって示されている。実線の矢印は、プロセス１０００などのプロセスの管理の下で発生するタイマー満了を表す。いくつかの実施形態では、プロセス１０００は、各時間間隔（すなわち、分１、２、３など）において実行され得る。
【００８４】
たとえば、時間７において、Ａｐｐ２のソフトタイマーは、通常満了したであろう。しかしながら、Ａｐｐ１のタイマーが、Ａｐｐ２のソフトタイマーの２分間の許容差内にある時間６において満了したので、Ａｐｐ２のソフトタイマーは、時間６において早期に満了した。同様に、時間１４におけるＡｐｐ３のクロックの満了は、Ａｐｐ１とＡｐｐ２の両方のためのクロックの２分間の許容差内に入る。時間１９までに、Ａｐｐ１、Ａｐｐ２、およびＡｐｐ３のためのクロックの各々は、等しいかまたは互いの高調波(harmonics)である期間（それぞれ５分、５分、および１０分）を有するので、クロックは正確に同相になり（通信要求は、その後、時間１９、２４、および２９において行われ、マスタクロックは、他のアプリケーションに対する影響を有しない）、通信リソースをはるかに効率的に利用することになる。概して、タイマーが等しい期間を共有する場合、またはそれらの期間が互いの高調波（すなわち、倍数）である場合、それらは、他の「マスタ」タイマーの満了からの干渉を除外して、永続的に互いに同相のままであり得る（もちろん、同期はまた、アプリケーションのタイマーのいずれかの周期が変化した場合、中断され得る）。したがって、この例は、プロセスが適用されないときのタイミング図１１と比較して、分６と分３３との間に、１４個の接続要求ではなく、６つの接続要求が行われることを示す。
【００８５】
別の例として、図１３に、アプリケーション（Ａｐｐ１、Ａｐｐ２、およびＡｐｐ３）が同じ期間を所有しない（それぞれ、８分、５分、および１０分）、別の状況を示す。図１１のタイミング図の場合のように、図１３の接続要求は、大部分のアプリケーションによって採用される従来の非協調技法を反映する。協調のこの欠如により、モバイルデバイスのリソースの使用が非効率的になり、分７と分３４との間にモバイルデバイスの通信リソースを１２回再アクティブ化することになる。
【００８６】
図１３のアプリケーションは、図１３のＡｐｐ１が時間敏感であるという点で図１１とは異なる。本実施形態のいくつかの利益を採用することを望む開発者またはシステム設計者は、図１３のＡｐｐ１のために許容差をほとんどまたはまったく有しないタイマーを生成する可能性がある。したがって、ハードタイマーがＡｐｐ１のために使用され得る。図１３のＡｐｐ２およびＡｐｐ３は、対照的に時間敏感でなく、したがって、ソフトタイマーによって適応され得る。図１３では、Ａｐｐ２およびＡｐｐ３は、それぞれ、２分間の許容差をもつソフトタイマーを与えられる。
【００８７】
図１４に、プロセス１０００などのプロセスを、今回は、図１３のアプリケーションに適用することの効果を示す。図１４のＡｐｐ１のタイマーは、ハードタイマーであるので、タイミング図１３の図１３のＡｐｐ１と同じままである。しかしながら、図１４のＡｐｐ３は、Ａｐｐ２の満了が、Ａｐｐ３の意図された満了時間の２分以内であるので、時間１２においてＡｐｐ２のタイマーの満了に基づいて早期に満了する。その後、Ａｐｐ２は、時間２５においてＡｐｐ１と同期され、Ａｐｐ３は、時間３０においてＡｐｐ２と同期される。上記で説明したように、アプリケーションは、図１、図２、図３、または図４のモバイルデバイス１０５上で実行し得る。さらに、モバイルデバイス１０５は、スケジューリングを協調させるためにプロセス１０００を実装し得る。この例は、あるクロックの前の同期（Ａｐｐ１に基づく時間２５におけるＡｐｐ２）が、別のクロックの後続の同期（Ａｐｐ２に基づく時間３０におけるＡｐｐ３）にどのように影響を及ぼし得るかを示す。アプリケーションクロックの期間は等しくないかまたは高調波でないので、クロックは、永久に正確に同期され得ない。それでも、この例は、プロセス１０００などのプロセスが適用されないときの図１３のタイミング図と比較して、分６と分３３との間に、１２個の接続要求ではなく、８つの接続要求が行われることを示す。
【００８８】
マスタクロックは、それらが関連付けられるアプリケーションに基づいて優先順位を付けられ得る。すなわち、多くの帯域幅またはバッテリー電力を消費するアプリケーションは、より少ない帯域幅またはバッテリー電力を消費するアプリケーションよりも、リソースを共有するためには好適でないことがある。したがって、いくつかの実施形態では、モバイルデバイス１０５は、プロセス１０００が、適切な範囲内の許容差を有するソフトタイマーを早期に満了する前に、満了した「マスタ」タイマーの挙動および／または対応する優先順位を考慮するように調整され得る。一例として、プロセスは、許容差がタイマーの早期の満了を可能にするアプリケーションの帯域幅要件と比較して、タイマー（すなわちマスタタイマー）がブロック１００５において満了したアプリケーションの各々のための帯域幅要件をさらに考慮し得る。マスタタイマーをもつアプリケーションの累積帯域幅要件が、他のアプリケーションとのチャネルの共用に対して緩和する場合、モバイルデバイス１０５は適切なアクションをとり得る。たとえば、動作を実行することを可能にされた、マスタタイマーをもつアプリケーションにおいて、接続要求が行われ得る。次いで、ソフトタイマーは、マスタタイマーアプリケーションが過大な帯域幅をもはや消費しなくなると、アプリケーションが既存の接続を利用するように、（ソフトタイマーの許容差によって許可される場合、それらの意図された満了時間の後に可能な）適切な時間に満了させられ得る。代替的に、ソフトタイマーの満了は、より少ない帯域幅を採用する新しい接続要求が行われるまで、またはソフトタイマーの許容差の終了まで遅延され得る。
【００８９】
図１１および図１３を参照しながら説明したような、上記で説明した実施形態のいくつかでは、タイマー満了は、通信ウィンドウの立上りエッジにおいて発生することが示される。いくつかの実施形態は、代わりに、データ接続の「立下りエッジ」において、すなわち、ノードとの通信が休眠状態に入ろうとしているときに分析を実行することを企図する。接続を開くことと閉じることの両方にコストがかかるので、モバイルデバイス１０５は、いずれかのアプリケーションが接続をオープンしようとしているかどうかと、現在の接続が閉じられると新しい要求を開始するのではなく、既存の接続を代わりに利用することができるかどうかとを確かめるために、接続を閉じる前にプロセス１０００と同様のプロセスを実行し得る。
【００９０】
本明細書で開示する技法および構造を採用して、モバイルデバイスは、アプリケーションからのシステムコールをキャプチャし、それらがオペレーティングシステムに到着することを保留するためのアプリケーションプログラムインターフェース（ＡＰＩ）を与える、（説明のためにラッパーと呼ぶ）ソフトウェアレイヤを採用し得る。キャプチャされたコールはアグリゲートされ得るので、ユーザがモバイルデバイスをアクティブに使用していない期間中に、モバイルデバイスの頻繁な起動が低減され得、他の通信リソースが温存され得る。
【００９１】
情報および信号は多種多様な技術および技法のいずれかを使用して表され得ることを、当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００９２】
さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の例示的な実施形態の範囲からの逸脱を生じるものと解釈すべきではない。
【００９３】
本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェアコンポーネント、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行し得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【００９４】
本明細書で開示する実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアで実施され得るか、プロセッサによって実行されるソフトウェアモジュールで実施され得るか、またはその２つの組合せで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体はＡＳＩＣ中に常駐し得る。ＡＳＩＣはユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別構成要素として常駐し得る。
【００９５】
１つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装した場合、機能は、１つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体上に記憶され得るか、あるいは非一時的コンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【００９６】
開示した例示的な実施形態の前述の説明は、当業者が本発明を実施または使用することができるように与えたものである。これらの例示的な実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書で示した例示的な実施形態に限定されるものではなく、本明細書で開示した原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］モバイルデバイスにおけるワイヤレス通信のための方法であって、
前記モバイルデバイス上の第１のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトすることと、
前記モバイルデバイス上で実行しているオペレーティングシステムの伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）スタックに前記要求が到着することを保留することと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースすることと、
を備える、方法。
［２］前記保留することは、前記モバイルデバイスがバックグラウンドモードにある期間中に行われる、［１］に記載の方法。
［３］前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、［１］に記載の方法。
［４］前記アプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、［３］に記載の方法。
［５］ラッパーのための命令を実行することであって、前記実行されたラッパーが、前記第１のアプリケーションからの前記要求を前記インターセプトすることを行う、実行すること
をさらに備える、［１］に記載の方法。
［６］前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、［５］に記載の方法。
［７］前記第１のアプリケーションを、要求が保留される種類のアプリケーションとして識別すること
をさらに備える、［１］に記載の方法。
［８］アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを保留することと、
をさらに備える、［７］に記載の方法。
［９］前記トリガリングイベントは、タイマーの満了、ディスプレイのステータス変更、マイクロフォンのステータス変更、スピーカーのステータス変更、前記モバイルデバイスの全地球測位システム（ＧＰＳ）センサーのステータス変更、ユニバーサルシリアルバスポートが使用中であるという指示、前記モバイルデバイスにオーディオ機器が接続されているという指示、前記モバイルデバイスにビデオ機器が接続されているという指示、Ｗｉ−Ｆｉタイプのネットワークへの接続が利用可能であるという指示、またはセルラータイプのネットワークへの無線接続が開いているという指示のうちの少なくとも１つを備える、［１］に記載の方法。
［１０］前記第１のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第１のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、通信リソースに接続するように前記第１のアプリケーションに命令する、与えることと、
をさらに備える、［１］に記載の方法。
［１１］前記第１のアプリケーションに関連する第１のタイマーの満了時間を判断することと、
第２のアプリケーションに関連する許容差と第２のタイマーの満了時間とを判断することと、
前記第１のタイマーの前記満了時間と、前記許容差と、前記第２のタイマーの前記満了時間とに基づいて、前記第２のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第１のアプリケーションからの前記要求と前記第２のアプリケーションからのインターセプトされた要求とをリリースすることと、
をさらに備える、［１］に記載の方法。
［１２］前記アプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を保留することと、
前記デッドラインより前に前記通信リソースに接続するための前記要求をリリースすることと、
をさらに備える、［１］に記載の方法。
［１３］前記要求が、前記モバイルデバイスのための通信チャネルを確立するためのシステムコールを備える、［１］に記載の方法。
［１４］前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
をさらに備える、［１］に記載の方法。
［１５］前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
をさらに備える、［１］に記載の方法。
［１６］前記間隔が、ネットワーク中のステートフルインターネットプロトコル（ＩＰ）ミドルボックスにおけるタイムアウト値よりも小さい、［１５］に記載の方法。
［１７］ワイヤレス通信のために構成されたモバイルデバイスであって、
プロセッサと、
前記プロセッサと電子通信しているメモリであって、オペレーティングシステムを備える、メモリと
を備え、
前記プロセッサが接続性エンジンを備え、前記エンジンが、
前記モバイルデバイス上の第１のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトすることと、
前記モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに前記要求が到着することを保留することと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースすることと、
を行うための命令を実行するように構成された、モバイルデバイス。
［１８］前記保留することは、前記モバイルデバイスがバックグラウンドモードにある期間中に行われる、［１７］に記載のモバイルデバイス。
［１９］前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、［１７］に記載のモバイルデバイス。
［２０］前記第１のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、［１９］に記載のモバイルデバイス。
［２１］前記メモリがラッパーをさらに備え、前記接続性エンジンが、前記ラッパーに対して命令を実行するようにさらに構成され、前記命令が実行されたとき、前記ラッパーが、前記アプリケーションからの前記要求をインターセプトするように構成された、［１７］に記載のモバイルデバイス。
［２２］前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、［２１］に記載のモバイルデバイス。
［２３］前記接続性エンジンは、
前記第１のアプリケーションを、要求が保留される種類のアプリケーションとして識別すること
を行うための命令を実行するようにさらに構成された、［１７］に記載のモバイルデバイス。
［２４］前記接続性エンジンが、
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを保留することと、
を行うための命令を実行するようにさらに構成された、［２３］に記載のモバイルデバイス。
［２５］前記トリガリングイベントは、タイマーの満了、ディスプレイのステータス変更、マイクロフォンのステータス変更、スピーカーのステータス変更、前記モバイルデバイスの全地球測位システム（ＧＰＳ）センサーのステータス変更、ユニバーサルシリアルバスポートが使用中であるという指示、前記モバイルデバイスにオーディオ機器が接続されているという指示、前記モバイルデバイスにビデオ機器が接続されているという指示、Ｗｉ−Ｆｉタイプのネットワークへの接続が利用可能であるという指示、またはセルラータイプのネットワークへの無線接続が開いているという指示のうちの少なくとも１つを備える、［１７］に記載のモバイルデバイス。
［２６］前記接続性エンジンは、
前記第１のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第１のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、前記通信リソースに接続するように前記第１のアプリケーションに命令する、与えることと、
を行うための命令を実行するようにさらに構成された、［１７］に記載のモバイルデバイス。
［２７］前記接続性エンジンが、
前記第１のアプリケーションに関連する第１のタイマーの満了時間を判断することと、
第２のアプリケーションに関連する許容差と第２のタイマーの満了時間とを判断することと、
前記第１のタイマーの前記満了時間と、前記許容差と、前記第２のタイマーの前記満了時間とに基づいて、前記第２のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第１のアプリケーションからの前記要求と前記第２のアプリケーションからのインターセプトされた要求とをリリースすることと、
を行うための命令を実行するようにさらに構成された、［１７］に記載のモバイルデバイス。
［２８］前記接続性エンジンが、
前記アプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を保留することと、
前記デッドラインより前に前記通信リソースに接続するための前記要求をリリースすることと、
を行うための命令を実行するようにさらに構成された、［１７］に記載のモバイルデバイス。
［２９］前記要求が、通信チャネルを確立するためのシステムコールを備える、［１７］に記載のモバイルデバイス。
［３０］前記接続性エンジンが、
前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
を行うための命令を実行するようにさらに構成された、［１７］に記載のモバイルデバイス。
［３１］前記接続性エンジンは、
前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
を行うための命令を実行するようにさらに構成された、［１７］に記載のモバイルデバイス。
［３２］前記間隔が、ネットワーク中のステートフルインターネットプロトコル（ＩＰ）ボックスにおけるタイムアウト値よりも小さい、［３１］に記載のモバイルデバイス。
［３３］モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成された装置であって、
前記モバイルデバイス上のアプリケーションからの要求をインターセプトするための手段であって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトするための手段と、
前記モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに前記要求が到着することを保留するための手段と、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースするための手段と、
を備える、装置。
［３４］前記保留することは、前記モバイルデバイスがバックグラウンドモードにある期間中に行われる、［３３］に記載の装置。
［３５］前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートするための手段
をさらに備える、［３３］に記載の装置。
［３６］前記アプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、［３３］に記載の装置。
［３７］ラッパーを実行するための手段であって、前記実行されたラッパーが、前記第１のアプリケーションからの前記要求をインターセプトするように構成された、実行するための手段
をさらに備える、［３３］に記載の装置。
［３８］前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、［３７］に記載の装置。
［３９］前記アプリケーションを、要求が保留される種類のアプリケーションとして識別するための手段
をさらに備える、［３３］に記載の装置。
［４０］アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別するための手段と、
非クリティカルアプリケーションからの要求のみを保留するための手段と、
をさらに備える、［３９］に記載の装置。
［４１］モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成されたコンピュータプログラム製品であって、前記製品が非一時的コンピュータ可読媒体を備え、前記媒体が、
前記モバイルデバイス上のアプリケーションからの要求をインターセプトするためのコードであって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトするためのコードと、
前記モバイルデバイス上で実行しているオペレーティングシステムのＴＣＰ／ＩＰスタックに前記要求が到着することを保留するためのコードと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースするためのコードと、
を備える、コンピュータプログラム製品。
【図１】
0005784816.tif 000002
【図２】
0005784816.tif 000003
【図３】
0005784816.tif 000004
【図４】
0005784816.tif 000005
【図５】
0005784816.tif 000006
【図６】
0005784816.tif 000007
【図７】
0005784816.tif 000008
【図８】
0005784816.tif 000009
【図９】
0005784816.tif 000010
【図１０】
0005784816.tif 000011
【図１１】
0005784816.tif 000012
【図１２】
0005784816.tif 000013
【図１３】
0005784816.tif 000014
【図１４】
0005784816.tif 000015