0

こんにちは私はユーザーが場所をマークできるアプリを作成する必要があるので、その場所に対応するアラームがあります.BroadCastレシーバーで開始しました放送受信機に登録しましたすべてが正常に機能していましたが、場所の保留中のインテントが何度も同じように起動していますこの記事で説明されている問題

ここ

多くの人がこのような同じ問題に直面している多くの質問があります

アクティビティonCreateメソッドでブロードキャストレシーバーを登録すると、最初の記事に解決策があります。これは、押し戻して登録を自動的に解除したときに、そのアクティビティにフォーカスがある場合にのみ機能しました。放送受信機をずっと動かしたい。実際には、[保存]をクリックするとアラートが表示され、その場所の近接アラートが保存されます。これは、アプリに関連する近接アラートを登録するための関連コードです。

String s=System.currentTimeMillis()+"";


Intent intent = new Intent(PROX_ALERT_INTENT+s);
intent.putExtra("longitude", longitude);
intent.putExtra("latitude", latitude);

       PendingIntent proximityIntent = PendingIntent.getBroadcast(getApplicationContext(), i, intent, PendingIntent.FLAG_UPDATE_CURRENT);



locationManager.addProximityAlert(

           latitude, // the latitude of the central point of the alert region

           longitude, // the longitude of the central point of the alert region

           1000, // the radius of the central point of the alert region, in meters

           -1, // time for this proximity alert, in milliseconds, or -1 to indicate no expiration

           proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected

      );

IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT+s); 

     registerReceiver(new ProximityAlertReceiver(), filter);

アクション文字列に定数とタイムスタンプを含むインテントを作成しています。次に、同じ定数+time_stampでブロードキャストレシーバーを登録しています。アラームは正常に機能していますが、アクティビティがフォアグラウンドにある場合にのみ機能します。それ以外の場合、アラームは機能しません。近接アラートを追加して、このタスクを実行するための1回だけまたは代替ソリューションを実行する方法を教えてください。

4

1 に答える 1

0

ProximityAlert がインテントを何度も発火していて、Activty にメモ付きでアラームを表示しているため、Activity の onNewIntent メソッドを使用して、アプリの複数のインスタンスが生成されないようにしました。

于 2012-12-21T13:28:01.960 に答える