组件

走着路睡觉大约 3 分钟

组件

组件

注意

开发新插件,尽量避免增加新的组件,现有的组件都将会替换为 服务扩展,或者监听器(services, extensions, or listeners)

组件功能是为了兼容老版本的IntelliJ Platform而遗留的功能,使用了组件的插件不能动态加载,需要重启才能安装、更新和卸载插件

组件根据作用域的不同,分为 <application-components>, <project-components>, 和<module-components>

替换

如何把组件替换为新的功能,请看下面文档:

替换Manage State 组件

用户在执行某些操作的时候,需要记录操作的状态和逻辑,使用 服务

替换持久化状态(Persisting State)组件

在应用级或者项目级插件的时候,如果需要持久化一些状态,使用 服务 ,实现 PersistentStateComponent 接口,
详情查看 持久化组件状态文档

替换订阅事件组件

订阅事件,使用 监听器 ,或者如果存在扩展点的话,创建一个扩展 (例如:com.intellij.editorFactoryListener)

替换应用启动组件-Application Startup

注意

尽量避免在应用启动的时候执行操作,会拖慢启动速度

如果必须在项目启动的时候执行组件,尽量满足下面条件:

应用启动类插件只在打开项目的时候执行,或者在执行插件的某个操作时执行,这类插件应尽量订阅AppLifecycleListeneropen in new window ,也可以参考 只运行一次任务

在启动的时候执行后台操作,可以实现 PreloadingActivityopen in new window

替换打开项目时运行的组件

在打开项目的时候执行的组件,可以替换为以下2种扩展

com.intellij.postStartupActivity

StartupActivityopen in new window 在 EDT(Event Dispatching Thread)上立即执行,如果需要异步并行执行,可以实现 DumbAware接口

com.intellij.backgroundPostStartupActivity

IntelliJ Platform 2019.3版本以后 StartupActivity.Backgroundopen in new window 扩展会在后台延时5秒后执行

运行时间长的或者需要大量CPU计算的任务,应该让用户能看到任务执行情况,可以使用 ProgressManager.run(Task.Backgroundable) 执行,

如果需要访问索引,必须使用DumbService封装一下,了解更多查看文档-线程规则

替换关闭项目和应用时运行的组件

如果需要在关闭项目或应用的时候执行代码,可以实现 Disposable接口的dispose()方法(详情 看文档 服务),
//todo 或者 use Disposer.register() passing a Project or Application service instance as the parent argument (see Choosing a Disposable Parent).

上次编辑于:
贡献者: zhaojingbo
Loading...