Android 检查已筛选的意图的操作

Android 检查已筛选的意图的操作,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我想每分钟运行一个任务,这个问题已经和我的类似了。一位用户发布了以下消息: BroadcastReceiver\u BroadcastReceiver; 私有最终简化格式_sdfWatchTime=新简化格式(“HH:mm”); 私人文本视图(电视时间);; @凌驾 public void onStart() { super.onStart(); _broadcastReceiver=新的broadcastReceiver(){ @凌驾 公共void onReceive(上下文ctx、意图) {

我想每分钟运行一个任务,这个问题已经和我的类似了。一位用户发布了以下消息:

BroadcastReceiver\u BroadcastReceiver;
私有最终简化格式_sdfWatchTime=新简化格式(“HH:mm”);
私人文本视图(电视时间);;
@凌驾
public void onStart()
{
super.onStart();
_broadcastReceiver=新的broadcastReceiver(){
@凌驾
公共void onReceive(上下文ctx、意图)
{
if(intent.getAction().compareTo(intent.ACTION\u TIME\u TICK)==0)
_setText(_sdfWatchTime.format(new Date());
}
};
registerReceiver(_broadcastReceiver,new IntentFilter(Intent.ACTION_TIME_TICK));
}
@凌驾
公共void onStop()
{
super.onStop();
如果(_broadcastReceiver!=null)
未注册接收器(_广播接收器);
}
我的问题是理解onReceive中的if语句

  • 为什么它必须是0?上面说什么
  • 当我们已经为动作设置了IntentFilter时,为什么首先需要检查动作时间勾号
  • 我会在最初的上下文中问这个问题,但我对stackoverflow还不熟悉

    为什么它必须是0?上面说什么

    好吧,让我们把它拆开

    intent.getAction()
    
    如果你看,基本上它告诉你意图是什么。它返回一个字符串<代码>意图。动作\u时间\u勾号实际上是一个字符串

    .compareTo() == 0
    
    比较两个对象(在本例中为字符串)。当您检查它是否等于0时,您正在检查两个字符串是否相等,相同

    所以把它放在一起

    intent.getAction().compareTo(Intent.ACTION_TIME_TICK) == 0
    
    这将检查意图的操作是否为广播操作
    操作\u时间\u勾选


    当我们已经为动作设置了IntentFilter时,为什么首先需要检查动作时间勾号

    有时,您会意外(或故意)注册同一广播接收器多次,使用不同的目的过滤器。您的广播接收器将接收多个不同操作的广播。在
    onReceive
    方法中,您需要确保您正在响应相应的操作。

    1)它相当于
    Intent.action\u TIME\u TICK.equals(Intent.getAction())
    。检查收到的意图是否真的具有预期的操作。2) 通常情况下,广播接收器可以侦听多个动作。。。也许其他人会提供更多的理由。