2012-03-09 18 views
0

私は、次の場合のベストプラクティスと考えています:プッシュ通知にサービスを使用する必要がありますか?

サーバーから取得したメッセージをリッスンし、トーストメッセージでユーザーに通知するソケットを開いたままにしておく必要があります。私が使用してメッセージを送ることができるこの方法を

私が最初に考えたのは、シングルトンを使用して、私はそこに、サーバとの通信に使用するクライアントを格納しに行ってきました

MySingletonHere.getInstance().sendMessage("message"); 

私はおそらく意志の問題をここでは、ソケットが着信メッセージを受信したときに何らかの処理を行っています。それを処理する

一つの方法は、活動中にこのようなものになるだろう:

それは1のように感じることはありませんので、これは「良い」解決策と見なされている場合は私がお願いしたいと思います
MySingletonHere.getInstance().setMessageHandler(new MessageHandler() { 
    public String handleMessage(String m) { 
     Toast.make ... 
    } 
}); 

。おそらくこのような状況に対処できるアンドロイドコンポーネントがあります。私はアンドロイドの開発についてはあまりよく分かりませんが、私が正しく理解すれば、サービスはこのようなことをすることができますか?

おかげ

+0

あなたは[C2DM](code.google.com/android/c2dm/)を考えましたか? – Phil

+0

私たちはC2DMを考えましたが、それは小規模な学校プロジェクトであり、プッシュ通知は最も重要な部分ではないので、私たちは簡単に独自のサーバー/クライアントを作成しました。コミュニケーションはうまくいきました。私は、ほとんどの人がこのようなバックグラウンドメッセージを処理するために使用するものについて興味がありました(必ずしもプッシュ通知ではない)。 – geoffreydv

答えて

0

メッセージ気遣う一と専用アクティビティがフォアグラウンドである間、これらのメッセージは、唯一の問題、ちょうど活動はソケット自体を処理している場合。

それ以外では、サービスが必要です。なぜなら、Androidはあなたのプロセスを他の方法で取り除くからです。サービスがかなり短時間で実行されているか、が明らかにであり、ユーザーの制御下にあります(そしてstartForeground()も使用しています)。これは機能します。

関連する問題