私のアプリケーションでは、チャット ルームをシミュレートしたいと考えています。アプリが画面外にある場合、アプリが画面上にあり、チャット アクティビティにある場合、アプリが画面上にあるが他の画面にある場合の 3 つのシナリオがあります。
サーバーがアプリケーションに通知を送信します。GCMintentService (私のレシーバー) がそれをキャッチします。
アプリケーションが画面から外れている場合、何かが起こったことをユーザーに知らせるために、新しい通知が生成されます (私はこれに問題はなく、生成できます)。
ユーザーがアプリケーションを使用していて、チャット画面にいる場合 (たとえば、ユーザーがチャット画面にいて、メッセージを送信し、新しいメッセージが届くのを待っている場合)、画面を更新します。
ユーザーがアプリケーションを使用しているが、チャット画面にいない場合は、チャット アイコンを点滅させます。
最初のステップは、アプリケーションが実行されていることを知ることだと思いますか? 次のコードは便利だと思いましたが、アプリが使用されていて画面に表示されていることはわかりません。アプリがメッセージを受信する前に、ユーザーがホームボタンをクリックしてアプリを停止した可能性があります。はメモリ内にあるため、このコードは使用可能であると示しています。
ActivityManager activityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
for(int i = 0; i < procInfos.size(); i++){
if(procInfos.get(i).processName.equals("MY.PACKAGE.NAME")) {
Toast.makeText(getApplicationContext(), "TEST MESSAGE", Toast.LENGTH_LONG).show();
}
}
何か提案はありますか?フラグメント ホルダー (メインのフラグメント アクティビティ) で変数を定義できます。いい方法ですか?