Android - 将单击侦听器附加到RemoteViews

时间:2014-02-02 15:11:24

标签: android android-pendingintent android-remoteview

假设我创建了一个RemoteViews的实例,它包含两个Button。我希望当用户点击这些按钮时,Service(或BroadcastReceiver或其他)处理此点击。据我所知,到目前为止,有两种方法可以达到这个目的:

  1. 为这些按钮分配不同的动作,例如
    ACTION_BTN_1_CLICKED

    ACTION_BTN_2_CLICKED
    然后通过intent.getAction()检索服务中的操作,最后服务执行相应的任务

  2. 将一些额外内容添加到Intent对象中,该对象通过PendingIntent括起来,例如:

    intent.putStringExtra("which_button", "btn1"); // for Button 1

    intent.putStringExtra("which_button", "btn2"); // for Button 2

    另一方面,在Service中,我可以通过intent.getExtras().getString("which_button")

  3. 区分此信号

    现在我的问题是哪种方法至少在实践中更好?感谢

1 个答案:

答案 0 :(得分:1)

我不确定你是否可以认为一个人比另一个更好,但我认为第二个解决方案可能更易于管理和扩展。您可以在Integer类中添加R个额外的ID,也就是您声明的ID。这可以确保它们是唯一的,并允许您在switch语句中引用它们。这也意味着您的路由代码在一个地方,因此如果有错误,将更容易找到。