2011-10-09 6 views
7

私が取り組んでいるプロジェクトは2つの異なるアプリケーションを持っています.1つはサーバーで、もう1つはクライアントです。サーバーアプリケーションにはサービスクラスが1つあり、onStartCommand()機能のサーバースレッドを開始します。サーバースレッドのクラスは、サービスクラス自体で定義されています。サーバーはクライアントからデータを受信するたびにデータベースに格納します。問題は、通知やトーストメッセージで新しいデータが到着したことをユーザーに通知することです。また、サービスクラスやスレッドクラスで書くべきか、firstActivityクラスから私がサーバサービスを開始するのかを通知するコードをどこに書くべきか教えてください。ありがとうございました。バックグラウンドサービスからの通知を表示するにはどうすればよいですか?

+1

可能重複(http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android) – Reno

+0

@リノ:私はすでにこの投稿を参照しましたが、私はそのコードをどこに置くべきか、コードは不完全であることを理解していませんでした。私はAndroidで初心者です。 – sagar

答えて

3

これは間違っていますか?サーバーアプリとクライアントアプリの両方が同じAndroid搭載端末ですか?

いずれの場合でも、サービスを通じて通知するコードについては、ApiDemosを参照してください。

あなたはおそらくローカルサーバーではなくリモートサーバーを扱うことになり、ネットワークに関連するすべての待ち時間の問題があるので、AsyncTaskでサービスをラップする方がよいと思います。また、放送受信機について学ぶ

は、ブロードキャストレシーバは無限にループ内で独自のサービスのポーリングを持ってすることなく、サービス/活動を誘発するための素晴らしい方法することができ、登録しました。

+0

ありがとう!私のサーバとクライアントのアプリは異なるエミュレータで動作しているので、データの転送やデータベースへの格納に問題はありません。私は放送受信機を見るでしょう。データベーステーブルに変更があることを検出する方法はありますか?変更が見つかった場合、ユーザーにアクティビティクラスを通知できます。 – sagar

+0

私が言ったように、私は放送受信機を使用して、それは動作しているが、私はブロードキャストで1文字列を送信し、その文字列をトーストmsgに表示したい。 intent.putextra()を使用しました。受信側で私はnull値を受信して​​いる、私は問題が私の余分なコードを取得することができます、私はどのように放送の意図で送信するデータを受信するか教えてください。 – sagar

9

まず、Notificationsの使い方についてこの記事を読む必要があります。

次はあなたがクライアントからいくつかのデータを受信ポイントでサービス・クラスでこのコードを書くことができ、通知を送信するためにこれを使用します。 [アンドロイドでサービスからの通知を送信する]の

NotificationManager notificationManager = 
    (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
int icon = R.drawable.notification_icon; 
CharSequence notiText = "Your notification from the service"; 
long meow = System.currentTimeMillis(); 

Notification notification = new Notification(icon, notiText, meow); 

Context context = getApplicationContext(); 
CharSequence contentTitle = "Your notification"; 
CharSequence contentText = "Some data has arrived!"; 
Intent notificationIntent = new Intent(this, YourActivityThatYouWantToLaunch.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

int SERVER_DATA_RECEIVED = 1; 
notificationManager.notify(SERVER_DATA_RECEIVED, notification); 
関連する問題