0

サービスで何らかのアクションが実行された後、UI(アクティビティ)を更新しようとしています。これは非常に単純な例ですが、私にはうまくいかないようです。ここで何が欠けていますか?

ExampleService:

  public class ExampleService extends IntentService{
    @Override
    protected void onHandleIntent(Intent intent) {
        notifyActivity();
    }

    private void notifyActivity() {
        Intent broadcast = new Intent(this, ExampleActivity.class);
        sendBroadcast(broadcast);
    }
  }

ExampleActivity:

public class ExampleActivity extends ListActivity {
         private BroadcastReceiver receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
         Toast.makeText(getApplicationContext(), "received", Toast.LENGTH_SHORT).show();
        }
    };

    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(receiver);
    }

    @Override
    public void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter();
        registerReceiver(receiver, filter);
    }
}
4

1 に答える 1

1

その方法で匿名の動的受信機にブロードキャストを送信することはできません。Intentでアクション文字列を定義し、でそのアクション文字列を使用する必要がありますIntentFilter

LocalBroadcastManagerパフォーマンスを向上させるために、このシナリオでの使用を検討してください。これを示すサンプルプロジェクトを次に示します。

于 2012-04-24T22:49:58.293 に答える