0

例如活动监听SearchDialog的瓶盖内你的onCreate()在这里注册监听器:您是否需要在Android中将活动监听器添加到SystemService中一次?或也在简历()?

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

我的问题是将这个仍然是一个监听器或我需要里面再次将其设置为监听器说的简历() ?或者一个注册总是注册。我没有保留对SearchManager的本地引用。

另外,为什么我们在这个问题上,是否有任何理由检查一个管理器是否是这样的空值,或者是否安全地假设你永远不会得到一个空管理器?

+0

如果你想要一个'健壮'的应用程序,不要假设你无法控制。使用空检查,但是如果它实际上是空的,请做一些有用的事情。但是,如果你很sl,,你可能会说:“如果'SearchManager'为'null',那么整个应用程序就无法工作,因此无论它是崩溃还是以一种干净的方式关闭都无所谓” – trichner

回答

0
  1. 监听器将整个Activity的生命周期仍然存在,所以你应该设置听者onCreate。在onResume中设置监听器是多余且不必要的。

  2. Android文档指出getSystemService只有在服务名称(本例中为Context.SEARCH_SERVICE)不存在的情况下才会返回null。所以只要你肯定存在,它不会返回null