java - AsyncTaskLoader真的继承自AsyncTaskLoader吗?

标签 java inheritance android-asynctask android-studio asynctaskloader

如果您在 Drodio (Android Studio) 中突出显示一个类并按下 Ctrl+N,它将显示该类的继承层次结构,就像 AsyncTask 一样:

enter image description here

这好像表明AsyncTaskLoader继承自AsyncTaskLoader?是这样吗?如果是这样,那是故意的吗?或者这里发生了什么?

更新

我的错;我在提示中读到“Ctrl+N”,它实际上说的是“Ctrl+H”。以下是后者的效果:

enter image description here

(尽管仍然不符合我的预期)

最佳答案

准确回答这个问题需要更多地了解您的项目(大概是 hhs.app)。然而,Drodio 的层级确实发现了 PersistHistoryAsyncTask ,这是 ActivityChooserModel 的私有(private)内部类,由于是私有(private)类而没有在 Android 文档中列出,所以我的观点是该 android 库中没有继承自 AsyncTask 的类。我原来的回复(如下)是不正确的。

假设 RESTfulActivity 中列出了内部类, SQLiteActivity , MainActivity ,和DeliveryItemActivity全部延伸AsyncTask ,第二个屏幕截图中的结果完全符合预期。 AsyncTask不继承任何东西(显然,除了 Object ),并且您有 9 个扩展 AsyncTask 的类。所以,你有一个非常简单的层次结构:

java.lang.Object
  |
  +-- android.os.AsyncTask
        |
        +-- hhs.app.RESTfulActivity.PostDeliveryItemTask
        |
        +-- hhs.app.SQLiteActivity.FetchAndPopTask
        |
        +-- hhs.app.MainActivity.GetVendorsTask
        |
        +-- hhs.app.DeliveryItemActivity.PostDeliveryItemTask
        |
        +-- etc...
<小时/>

原始答案:

您正在查看两个不同的类:android.content.AsyncTaskLoaderandroid.support.v4.content.AsyncTaskLoader .

前者是:

Abstract Loader that provides an AsyncTask to do the work.

后者是:

Static library support version of the framework's AsyncTaskLoader. Used to write apps that run on platforms prior to Android 3.0.

两者AsyncTaskLoader类继承自名为 Loader 的类在同一个包中,两个 Loader类继承自 Object 。相关类均未实现任何接口(interface)。

您可以在 grepcode.com 上查看这两个类的源代码:

据我所知,这两个类都没有以任何方式与另一个类耦合。支持版本导入android.content.Context ,但是ContextAsyncTaskLoader 没有做任何事情在它自己的包中。

综上所述,您发布的屏幕截图中的 Drodio 功能似乎根本不打算成为继承树。相反,这是一个类别搜索。您已突出显示 AsyncTask ,搜索结果显示另外 3 个以“AsyncTask”开头的类,2 个以“AsyncTask”结尾的类,以及 1 个以“Async”开头并以“Task”结尾的类(除了实际的 AsyncTask 之外的所有这些)。类(class))。考虑AsyncTask不继承这些类中的任何一个( AsyncTask 不扩展或实现任何内容),也不继承任何这些类 AsyncTask (在 android.* 中没有扩展 AsyncTask 的类),很明显 Drodio 的这个功能与继承无关。

事实上,Driodo 没有显示您自己的 AsyncTask 的具体实现似乎是棺材上的最后一颗钉子,特别是因为您的光标位于定义子类的那一行。 (虽然并非所有 IDE 都可以将用户定义的函数合并到文档弹出窗口中,但大多数至少能够处理同一文件中的内容。)

关于java - AsyncTaskLoader真的继承自AsyncTaskLoader吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23686881/

相关文章:

java - 如何通过多级extends来解析一个泛型?

javascript - 这种在 javascript 中调用 super() 的方法有什么问题吗?

Android:ProgressDialog 未显示在适配器类中

java - 如何在JSP中访问web.xml初始化参数

java - 如何将 BufferedImage 作为对象本身进行旋转

python - 在子类方法中向函数添加钩子(Hook)

java - 使用 mockito 模拟 AsyncTask 导致 NullPointerException

java - Android 资源 : SQLiteDatabase Missing databases/***. 资源或目标文件夹中的 zip 文件不可写

java - 扩展 IOException

java - JSP页面中的 vector