0

以下のことを行うアプリケーションを開発しています。

  1. 着信/発信通話を追跡します。
  2. ユーザーが通話に参加した場合、通話を切断した後、画面がポップアップ表示されます (ユーザーはいくつかの情報を入力する必要があり、コンテンツは (Sqlite) データベースに保存されます)。

今私がやっていることは:-

  1. 最初に別のエントリ ポイント (自動起動) を作成します。これがアプリケーションのエントリ ポイントです。(ロジックは正常に動作しています)
  2. 着信/発信通話を追跡する電話リスナーを実装します (ロジックは正常に動作しています)
  3. 通話が切断されると、詳細画面がポップアップ表示され、ユーザーは画面を埋めることができます。(ロジックは正常に動作しています)
  4. しかし、問題は、ユーザーが呼び出しを受信して​​アプリケーションに戻ると、アプリケーションが変数の状態 (ファイル接続、アプリケーションで使用するグローバル変数など) を維持できないことです。それらはすべてリセットされます。この問題は、着信/発信通話時間でのみ発生しています。

    • 実行時永続ストレージを使用しましたが、データベースにレコードが挿入された場合に機能しません。
    • データベース クラスを再初期化しましたが、まったく機能しません。

この問題が発生する理由を教えてください。

4

1 に答える 1

2

「アプリケーションは変数の状態を維持できません (ファイル接続、アプリケーションで使用するグローバル変数など) それらはすべてリセットされます」

これらの「グローバル」変数を「静的」変数として維持しようとしていると思います。静的変数は、同じ Application インスタンスに対してのみグローバルであることに注意してください。この場合、Phone Listener は別のアプリケーション (電話アプリケーション) で呼び出されるため、これらの変数はアプリケーションで表示される変数とは異なります。

これを解決するには、次の 2 つのことをお勧めします。

a) RuntimeStore を使用して、共有 (グローバル) 変数を格納する場所を提供します。

http://supportforums.blackberry.com/t5/Java-Development/Create-a-singleton-using-the-RuntimeStore/ta-p/442854

b) リスナーが行うことはできるだけ少なくし、グローバル イベントを使用して、アプリケーションのコンテキストで必要な情報をアプリケーションに戻します。

http://supportforums.blackberry.com/t5/Java-Development/Global-Events-and-Global-Event-Listeners/ta-p/444814

しかし、おそらく私はあなたの問題を明確に理解していません。そうでない場合は、明確にしてください.

于 2013-09-11T18:01:58.907 に答える