如果您在 Drodio (Android Studio) 中突出显示一个类并混合 Ctrl+N,它将显示该类的继承层次结构,就像 AsyncTask 一样:
这似乎表明 AsyncTaskLoader 继承自 AsyncTaskLoader?是这样吗?如果是这样,那是故意的吗?或者这里发生了什么?
更新
我的错; 我在提示中读到了“Ctrl+N”,它真正说的是“Ctrl+H”。这是您使用后者得到的结果:
(虽然仍然不是我所期望的)
如果您在 Drodio (Android Studio) 中突出显示一个类并混合 Ctrl+N,它将显示该类的继承层次结构,就像 AsyncTask 一样:
这似乎表明 AsyncTaskLoader 继承自 AsyncTaskLoader?是这样吗?如果是这样,那是故意的吗?或者这里发生了什么?
我的错; 我在提示中读到了“Ctrl+N”,它真正说的是“Ctrl+H”。这是您使用后者得到的结果:
(虽然仍然不是我所期望的)
准确回答这个问题需要更多地了解您的项目(大概是 hhs.app)。但是,Drodio 的层次结构确实发现了PersistHistoryAsyncTask
,它是 的私有内部类ActivityChooserModel
,由于是私有类,因此未在 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.AsyncTaskLoader
和android.support.v4.content.AsyncTaskLoader
.
前者是:
提供工作的抽象加载器
AsyncTask
。
后者是:
框架的静态库支持版本
AsyncTaskLoader
。用于编写在 Android 3.0 之前的平台上运行的应用程序。
两个AsyncTaskLoader
类都继承自Loader
同一个包中命名的类,并且这两个Loader
类继承自Object
. 所讨论的类都没有实现任何接口。
您可以在 grepcode.com 上查看这两个类的源代码:
在我看来,这两个类都没有以任何方式与另一个类耦合。支持版本 imports android.content.Context
,但Context
不AsyncTaskLoader
对它自己的包中的 做任何事情。
尽管如此,您发布的 Drodio 的屏幕截图似乎根本不是为了成为继承树。相反,它是一个类搜索。您已突出显示AsyncTask
,搜索结果显示其他 3 个以“AsyncTask”开头的类、2 个以“AsyncTask”结尾的类和 1 个以“Async”开头并以“Task”结尾的类(除了实际AsyncTask
班级)。考虑到AsyncTask
不从这些类中的任何AsyncTask
一个继承(不扩展或实现任何东西),也不从这些类中的任何一个继承AsyncTask
(在android.*
没有扩展的类中AsyncTask
),显然 Drodio 的这个特性与继承无关.
Driodo 没有显示您自己的具体实现这一事实AsyncTask
似乎是棺材上的最后一颗钉子,特别是因为您的光标位于定义子类的那一行。(虽然并非所有 IDE 都可以将用户定义的函数合并到文档弹出窗口中,但大多数 IDE至少能够处理同一个文件中的内容。)