为什么android.app.Activity不是设计抽象的?

时间:2013-08-15 19:37:20

标签: java android android-activity

如果文档/教程说至少必须实现其方法android.app.Activity ,为什么onCreate()不是设计抽象的。

来自http://developer.android.com/guide/components/activities.html

  

您必须实施此方法。系统在创建时调用它   你的活动。

即使没有明确提及,如果没有实现,那么拥有android.app.Activity对象是没有意义的,或者?我理解parrent需要在onCreate()的自己实现中执行代码,但是当父onCreate()的一部分调用抽象回调方法时,肯定会有设计需要通过开发者。

此设计示例:

public abstract class Activity {


    public abstract void implementThis(Object o);

    public void onCreate(Object o){
        //Do stuff
        implementThis(o);
        //Do other stuff or end.
    }

}

我在这里遗漏了什么吗?如果开发人员必须需要将其子类化并提供自定义实现,为什么会出现非抽象Activity

3 个答案:

答案 0 :(得分:4)

在这里阅读: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/app/Activity.java#Activity.onCreate%28android.os.Bundle%29

“此方法的默认实现执行先前已被onSaveInstanceState(android.os.Bundle)冻结的任何视图状态的恢复。”

答案 1 :(得分:3)

  

为什么android.app.Activity不是设计抽象的,如果文档/教程说至少它的方法onCreate()必须实现。

对文件提出过多的抗议。您没有 来实施onCreate()。您可以通过创建没有onCreate()并运行它的活动来判断这一点。

  

没有实现,没有任何关注android.app.Activity对象,或者?

欢迎您小心地在其他地方设置您的用户界面(例如onResume())。通常,您可以在onCreate()中执行此操作。

  

我理解parrent需要在onCreate()的自己实现中执行代码,但是当父onCreate()的一部分调用抽象回调方法时,肯定会有设计需要由显影剂。

不确定。他们选择不这样做。

答案 2 :(得分:0)

建议您在onCreate中设置您的活动,但不是必需的。假设我不关心我的活动生命周期,我可以在onResume中设置所有内容并在onPause中删除它。提供从onCreate调用的抽象方法比任何方法都更具限制性。

注意:我不是建议任何人这样做 - 只要你可以,如果你真的想要。