2

私はそれ自体を実行するサービスを持っています (サービスは自動的に開始されます)。

そして私はアクティビティを持っています。
このアクティビティ ボタンでメソッドを開始しますDoIt()

Button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
      DoIt();
    }
});

dataボタンを押してメソッドが機能すると、サービス の変数にいくつかのデータが書き込まれます。ログで
確認できます:data

public String getMessage(String data) {
... 
Log.d(TAG, "Our Data: " + data);
return date;
...   

しかし、ボタンを押してアクティビティ (ボタンの下) でこのデータを表示するにはどうすればよいですか?
ありがとう。

4

4 に答える 4

1

アクティビティからこのデータを確認する方法はありません。
アプリケーション クラスを作成すると、作業が簡単になります。サービスがデータを更新し、アクティビティがデータを取得できるように、アプリケーション クラスにデータを保持できます。それがあなたが望むものかどうかはわかりません。

于 2012-09-19T09:49:11.487 に答える
0

サービスをアクティビティにバインドする必要があります。サービスがバインドされると、サービス内のメソッドにアクセスできます。http://developer.android.com/guide/components/bound-services.htmlの方法については、この例をご覧ください。

データが変更されたときにアクティビティが即座に通知されるように、リスナーをサービスに追加することもできます

于 2012-09-19T11:17:45.863 に答える
0

次のようにアクティビティにハンドラーを追加します:-

Handler handler = new Handler() {
        public void handleMessage(Message message) {
            Object path = message.obj;
            if (message.arg1 == RESULT_OK && path != null) {
                Toast.makeText(context,
                        "Success" + path.toString(), Toast.LENGTH_LONG)
                        .show();
            } else {
                Toast.makeText(context, "Operation failed.",
                        Toast.LENGTH_LONG).show();
            }

        };
    };

次のようなメッセージオブジェクトでサービスから値を送信します:-

 Messenger messenger = (Messenger) extras.get("MESSENGER");
                Message msg = Message.obtain();
                msg.arg1 = data;//your value here
                msg.obj = data;
                try {
                    messenger.send(msg);
                } catch (android.os.RemoteException e1) {
                    Log.w(getClass().getName(), "Exception sending message", e1);
                }

それがうまくいくことを願っています。

于 2012-09-19T11:46:37.977 に答える