【问题标题】:android asynctask安卓异步任务
【发布时间】:2012-03-04 11:02:21
【问题描述】:

在 Android 中定义 ASyncTask 及其关联方法时,会出现 3 个点,例如 protected Long doInBackground(URL... urls)

这些点是什么意思?

【问题讨论】:

  • 它是一个数组,...而不是[]
  • 所以 int[] numbers 和 int... numbers 是同一个意思吗?
  • 是的,我不知道为什么 AsyncTask 会这样做。
  • "..." 与 "[]" 不同,它们以某种方式指代相同的事物,但用法不同。这不是 AsyncTask 特定的,但许多类和方法也使用它。参数中的“...”允许调用者放置不定数量的参数,而对于“[]”,您必须提前创建一个具有确定大小的数组。例如。 someMethod(String... param) => 调用时,你可以这样做:someMethod(p1, p2, p3, p4) 或简单的 someMethod(p1)。

标签: java android android-asynctask


【解决方案1】:

这不是特定于 AsynTask 或特定于 Android 的。将可变长度的参数传递给方法是 Java 的一项功能。

看看: How to create Java method that accepts variable number of arguments?

【讨论】:

    【解决方案2】:

    这不完全一样。考虑以下示例

    示例 1:

    public String concatenateStrings(String... strings){
      StringBuffer sb = new StringBuffer();
      for( int i = 0; i < strings.length; i++ )
        sb.append( strings[i] );
    
      return sb.toString();
    }
    

    示例 2:

    public String concatenateStrings2(String[] strings){
      StringBuffer sb = new StringBuffer();
      for( int i = 0; i < strings.length; i++ )
        sb.append( strings[i] );
    
      return sb.toString();
    }
    

    它们几乎一模一样,对吧?错了,叫他们是最大的不同。第一个示例允许添加未定义数量的字符串。

    示例 1:

    concantenateStrings("hello", "World", " I ", " can ", " add ", " so ", " many strings here" );
    

    示例 2:

    Strings[] myStrings = new Strings[7];
    myStrings[0] = "Hello";
    myStrings[1] = "world";
    myStrings[2] = " I ";
    ...
    myStrings[6] = " many strings here";
    concatenateStrings2( myStrings );
    

    【讨论】:

      【解决方案3】:

      它是java的概念。它看起来像数组。 (并且您处理它的方式主要就像在阵列上处理一样)。但是,它在某些方面有所不同。

      你会在android中经常遇到这种情况,例如当你使用view animation或property animation进行布局时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        • 1970-01-01
        • 1970-01-01
        • 2011-06-22
        • 1970-01-01
        相关资源
        最近更新 更多