0

たとえば、SearchDialog の終了をリッスンするアクティビティ内で、ここで onCreate() にリスナーを登録します。

android.app.SearchManager searchManager =     (android.app.SearchManager)getSystemService(Context.SEARCH_SERVICE);
    if (searchManager != null)
    {
       searchManager.setOnDismissListener(this);
    }

私の質問は、これはリスナーのままですか、それともレジューム()内で再度リスナーとして設定する必要がありますか? または登録されたものは常に登録されています。SearchManager へのローカル参照を保持していません。

また、なぜ私たちがそうしているのか、マネージャーがこのように null であるかどうかを確認する理由はありますか?それとも、null マネージャーが返されることはないと想定しても安全ですか?

4

1 に答える 1

0
  1. リスナーは のライフサイクル全体にわたって存続するActivityため、リスナーを に設定する必要がありますonCreate。リスナーの設定onResumeは冗長で不要です。

  2. Android のドキュメントには、サービス名 (この場合は ) が存在しない場合にのみgetSystemServiceが返されると記載されています。あなたがそれが存在することを確信している限り、それは返されません.nullContext.SEARCH_SERVICEnull

于 2012-06-23T00:20:34.393 に答える