|
|
51CTO旗下网站
|
|
移动端

更新选项菜单的事件处理

《Learning Android(中文版)》第8章服务,在本章,我们将动手创建一个服务。这个服务的任务是在后台运行的,获取用户在Twitter上最新的时间轴消息,并更新到应用上。本节为大家介绍更新选项菜单的事件处理。

作者:李亚舟/任中龙/杜钢译来源:电子工业出版社|2012-07-27 11:37

【51CTO技术沙龙第24期】10月27日,让我们共同探索AI场景化应用实现之道

更新选项菜单的事件处理

要捕获新条目的点击事件,我们需要更新StatusActivity中的onOptionsItemSelected()方法,这跟我们在92页的“更新StatusActivity,捕获菜单事件”一节中所做的一样。打开 StatusActivity.java文件,找到onOptionsItemSelected方法。现在里边已经有了一个大体框架,可以支持处理任意数量的菜单项。要实现启动服务与关闭服务的功能,需要在startService()和stopService()的调用过程中,向UpdaterService发送intent。最后的代码是这个样子:

  1. // 当选项菜单被点击时调用  
  2. @Override  
  3. public boolean onOptionsItemSelected(MenuItem item) {  
  4. switch (item.getItemId()) {  
  5. case R.id.itemServiceStart:  
  6. startService(new Intent(this, UpdaterService.class)); //.  
  7. break;  
  8. case R.id.itemServiceStop:  
  9. stopService(new Intent(this, UpdaterService.class)); //.  
  10. break;  
  11. case R.id.itemPrefs:  
  12. startActivity(new Intent(this, PrefsActivity.class));  
  13. break;  
  14. }  
  15. return true;  

创建一个intent,用以启动UpdaterService。如果这个服务还没有启动,运行时环境就会调用onCreate()。接下来调用onStartCommand(),这个方法不论服务是新启动还是已经在运行,都会被调用到。

类似地,这里调用stopService()向UpdaterService发送一个intent。如果这个服务正在运行中,这个intent就会令其执行onDestory()方法;如果服务没有在运行,就不会有任何效果,这个intent将被忽略掉。

在这个例子中我们使用intent发出了显式的意向,明确指定接收intent的目标类,即UpdaterService.class。

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

标准C++开发入门与编程实践

本书着重介绍标准C++语言,即1998年由ISO正式推出的关于C++的国际性标准版本。 本书从最基础的编程语言概念讲起,共分6篇24章。前4篇完整...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊