为什么要弃用?

时间:2014-10-28 10:10:07

标签: android deprecated android-date

推动Android开发团队弃用某些系统方法的原因是什么,我知道有些方法被其他方法取代,这些方法更加轻松有用,但有些方法甚至没有用其他方法替换,或者只是用一个方法替换尝试更具体地处理某些元素时没有用的大方法,例如来自Date类的一些方法:

Date mDate = new Date();
mDate.getDate();            //Deprecated
mDate.getDay();             //Deprecated
mDate.getHours();           //Deprecated
mDate.getMinutes();         //Deprecated
mDate.getMonth();           //Deprecated
mDate.getSeconds();         //Deprecated
mDate.getYear();            //Deprecated
mDate.getTimezoneOffset();  //Deprecated

现在唯一存在的是:

mDate.getTime(); // gives the whole Time & Date as a `long` Value in milliseconds

现在,当我得到Date Object并尝试获得时,我必须:

  1. 声明新的Calendar Object
  2. 使其等于日历类的实例。
  3. 将此日历对象时间设置为我获得的日期。
  4. 从此日历对象中提取所需的属性。
  5. 如果该数据对象仅包含时间等于零的日期,该怎么办?现在我必须在将日期应用到日历之前制定一个解决方法来保存日历的时间,然后在将日期应用到日期之后再次将保存的时间重置为日历。

    另一个找到here的示例,说明整个PictureListener界面已弃用,并且没有任何迹象表明应该替换它。

    第三个例子,当想要获得屏幕宽度& 身高,这是直接的:

    int windowWidth, windowHeight;
    windowWidth = getWindowManager().getDefaultDisplay().getWidth(); // Deprecated
    windowHeight = getWindowManager().getDefaultDisplay().getHeight(); // Deprecated
    

    但现在:

    int windowWidth, windowHeight;
    DisplayMetrics metrices = new DisplayMetrics();
    mContext.getWindowManager().getDefaultDisplay().getMetrics(metrices);
    windowWidth = metrices.widthPixels;
    windowHeight = metrices.heightPixels;
    

2 个答案:

答案 0 :(得分:4)

您提到的 java.util.Date 方法未被Android团队弃用,但Sun在Java 1.1中弃用 。这只是Java遗留的一个例子。如果您认为Calendar API难以忍受,我会考虑使用Joda Time。

答案 1 :(得分:1)

Depecration是告知开发人员有更好的方法来做事情,他们不应该再使用旧的方式。

框架开发人员可以删除过时的API,但由于他们不想打扰仍然使用这些API的开发人员,他们会弃用它们。你应该感谢他们以这种方式管理变革,而不是责备他们。