8.2.4. 更新选项菜单的事件处理

优质
小牛编辑
121浏览
2023-12-01

8.2.4.更新选项菜单的事件处理

要捕获新条目的点击事件,我们需要更新StatusActivity中的onOptionsItemSelected()方法,这跟我们在"更新StatusActivity,装载菜单"一节中所做的一样。打开 StatusActivity.java 文件,找到onOptionsItemSelected方法。现在里边已经有了为不同条目提供支持的大体框架,要增加两个“启动 Service ”与“关闭 Service ”两个条目,需要分别为UpdaterService通过startService()和stopService()发送 Intent 。更新后的代码如下:

// Called when an options item is clicked

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.itemServiceStart:

startService(new Intent(this, UpdaterService.class)); //

break;

case R.id.itemServiceStop:

stopService(new Intent(this, UpdaterService.class)); //

break;

case R.id.itemPrefs:

startActivity(new Intent(this, PrefsActivity.class));

break;

}

return true;

}

  1. 创建一个Intent,用以启动UpdaterService。如果这个Service还没有启动,就会调用onCreate()方法。然后再调用onStartCommand()方法,不过它不管Service是否启动都会被调用。
  2. 同样,这里调用stopService()为UpdaterService发送一个Intent。如果Service正在运行中,就会调用Service的onDestory()方法。否则,简单忽略这个Intent。

在这个例子中我们使用了 Explicit Intent ,明确指明接收 Intent 的目标类,即UpdaterService.class。