1

アプリを開発しています。(グーグルトークのように)電話の起動時に、継続的に実行されているバックグラウンドサービスを開始します。このサービスは UI と対話します (つまり、サーバーへの要求は最初に UI からサービスに送信され、サービスからサーバーに送信されます)、応答はサービスを介して UI に送信されます。

起動時にバックグラウンド サービスを開始する方法として私が知っているのは、「代替エントリ ポイントを作成し、それを使用してバックグラウンド サービスを開始する」ということです。

プロジェクトのプロパティを右クリックし、[アプリケーション] タブに移動して、[起動時に自動実行] / [システム モジュール] にチェックを入れます。

それは正しいですか?

Android では、システム定義の Service クラスを使用してこのサービスを実現できます。Blackberry 4.5 でこれを達成するにはどうすればよいですか? 1つのプロジェクトで(UIとサービス)やりたい。

解決策はありますか?


返信いただきありがとうございます。

へのリンクを頂きました

「方法 - アプリケーションの代替エントリ ポイントをセットアップする」

それはサービスを開始するための正しい解決策ですか?

アプリが欲しい。メールアプリのように。着信メールが来ると通知します(たとえば、メインアプリケーションが最小化されていても、サービスがバックグラウンドで実行されており、着信メールを継続的にチェックし、アプリアイコンの変更を通じてメインUIアプリケーションに通知します)

したがって、これには、起動時に開始されるサービスクラスのようなクラスがありますか、または「メインUIアプリケーションの代替エントリポイントをセットアップする」ことがこれに対する唯一の解決策ですか?


返信いただきありがとうございます..

このGlobalEveltListenerを読んで、自動起動時にサービスを開始することで、2つのアプリ(サービスアプリとUIアプリ)間の通信を処理しようとしました。

「永続ストア」を使用しており、両方のアプリでアクセスしています。ただし、永続ストアの名前は一意である必要があります。そうしないと、「リンカー エラー: サービス アプリを開始できません。永続ストアが複数定義されているため」というメッセージが表示されます。しかし、いくつかのデータベース呼び出しを行うには、両方のアプリで永続ストアにアクセスする必要があります。

そのため、両方のアプリを 1 つのプロジェクトに配置してサービスを処理しようとしています。永続ストアが一意になるようにします。

1 つのプロジェクトでサービスと UI 間のこの通信を実現するにはどうすればよいですか?

4

2 に答える 2

4

代替エントリ ポイントが必要になるのは、起動時に開始してバックグラウンドで実行するサービス モードの両方でプログラムを動作させたい場合のみです。アプリケーション モードでは、ユーザーがクリックしてソフトウェアの操作を開始できるアイコンをホーム画面に表示します。その場合、プログラムに「起動時に自動的に開始する」ことを伝えるエントリポイントと、「ユーザーの操作に応じて開始する」ことをプログラムに伝えるエントリポイントが必要です。

これを処理する他の方法があります。アプリケーションが ApplicationMenus を通じてユーザーに利用可能になる場合は、唯一無二のエントリ ポイント "Auto Run" と "System Module" を作成して、ブート時に開始し、メニューを登録し、アイコンを表示しないようにします。

「自動実行」に設定された 1 つのエントリ ポイントを使用することもできますが、システム モジュールではなく、アイコンが表示され、ApplicationManager.inStartup() メソッドを使用してブート ケースの開始を検出します。

あなたが説明する方法は、開発しているアプリケーションのタイプに適しています。各エントリポイントでプログラムに異なる引数を指定できるようにすることで、初期化を簡素化します。

于 2009-09-30T14:37:25.773 に答える
0

ここで別の質問に対する以前の回答を参照してください。これは本質的に、実行中の 2 つのプロセス間の IPC メカニズムです。

于 2009-10-05T07:52:04.783 に答える