0

私のプログラムは、ユーザーがボタンを押すことによって識別されたときに、そのユーザーを識別するアクティビティであり、サービスに拡張された別のクラス (alarmChecker) に文字列を送信します。このサービスは、データベースの値が変更されたかどうかを 30 秒ごとにチェックし、変更に気付いた場合に起動します。

メインクラス(MainActivity)で文字列を送信する私は次のようにします:

  / / Class MainActivity

  Intent intent = new Intent (MainActivity.this, alarmChecker.class);

  Bundle data = new Bundle ();
  data.putString ("user", user);
  intent.putExtras (data);
  pendingIntent = PendingIntent.getService (MainActivity.this, 0, intent, 0);

次に、クラス「alarmChecker」は次のようにパラメーターを受け取ります。

 / / class alarmChecker

     @Override
public int onStartCommand(Intent intent, int flags, int startId){
    super.onStartCommand(intent, flags, startId);
// Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();

 Bundle data = intent.getExtras();

 user = data.getString("user");

 Toast.makeText(getApplicationContext(), "user: "+user, Toast.LENGTH_LONG).show();
}

私がやりたいのは、ユーザーが戻るボタンを押すか、アプリケーションを終了してメイン画面 (MainActivity) に戻り、別の別のユーザーと識別した場合、alarmChecker クラスが新しい値を取得することですが、問題はグラブです。最初に入力した値を常に持ってください。

それを解決する方法は?

返信と挨拶をありがとう。

4

1 に答える 1

0

当面の質問については、サービスに実装すると、サービスを新しい値で更新できます。サービスが開始さonStartCommand()れているかどうかに関係なく、サービスが開始インテントを受け取るたびに呼び出されます。

質問とは関係ありませんが、長期的には、設計を再考することを検討するかもしれません。データベースを監視することは、探しているように聞こえるデータベースからのこの種のイベントを実行するContentObserverAPIを介して解決される問題だからです。

于 2012-10-26T18:08:41.940 に答える