如果你在Drodio(Android Studio)中突出显示一个类并且按住Ctrl + N,它将显示该类的继承层次结构,就像AsyncTask一样:
这似乎表明AsyncTaskLoader继承自AsyncTaskLoader?是这样吗?如果是这样,那是故意的吗?或者这里发生了什么?
我的坏;我读了" Ctrl + N"在它真正说的小费中," Ctrl + H"。以下是你对后者的看法:
(虽然还不仅仅是我的预期)
答案 0 :(得分:2)
准确回答这个问题需要了解更多关于你的项目的信息(大概是hhs.app)。但是,Drodio的层次结构确实发现了PersistHistoryAsyncTask
,这是ActivityChooserModel
的私有内部类,由于是私有类而未在Android文档中列出,所以我对 no的观点在我的原始响应(下面)中继承自AsyncTask
的android库中的类是不正确的。
假设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
。
前者是:
Abstract Loader,提供
AsyncTask
来完成工作。
后者是:
框架的
AsyncTaskLoader
的静态库支持版本。用于编写在Android 3.0之前的平台上运行的应用程序。
两个AsyncTaskLoader
类都从同一个包中名为Loader
的类继承,并且两个Loader
类继承自Object
。所讨论的类都没有实现任何接口。
您可以在grepcode.com上看到这两个类的来源:
这两个课程都没有以我能看到的任何方式与另一个课程相结合。支持版本导入android.content.Context
,但Context
在自己的包中不对AsyncTaskLoader
执行任何操作。
所有这一切,似乎并没有发布Drodio的功能,你发布的截图根本就是继承树。相反,它是一个类搜索。您已突出显示AsyncTask
,搜索结果显示其他3个以" AsyncTask"开头的类,以#34; AsyncTask"结尾的2个类,以及从使用" Async"以"任务"结束(除了实际的AsyncTask
类之外的所有内容)。考虑AsyncTask
不会继承这些类的任何(AsyncTask
不会扩展或实现任何内容),这些类中的任何一个都不会继承自AsyncTask
(在android.*
中没有扩展AsyncTask
的类),很明显Drodio的这个特性与继承无关。
事实上,Driodo没有显示你自己的AsyncTask
的具体实现,这似乎是棺材中的最后一针,特别是因为你的光标位于定义子类的行上。 (虽然并非所有IDE都可以将用户定义的函数合并到文档弹出窗口中,但至少的大部分都能够处理同一文件中的内容。)