Intellij 插件開發-AndroidStudio (零)番外
Intellij 插件開發-AndroidStudio(一)--環境構建
Intellij 插件開發-AndroidStudio(二)-文件操作
Intellij 插件開發-AndroidStudio(三)-寫入生成代碼
Intellij 插件開發-AndroidStudio(四)-添加類和模板
打個廣告,自己寫的代碼生成插件,自動生成很多實用代碼:
https://github.com/JianLin-Shen/MZSluggard-code
前言:
主要記錄一些開發中遇到的異常處理,和特殊用法彙總。
1、類插入異常
Must not change PSI outside command or undo-transparent action.
在插件中可能需要向PsiFile中寫入一些字段或者方法(這裏是寫入後需要展示,而不是類似PsiAugmentProvider生成的快照),
這裏需要注意的是,我們拿到新生成的psiClass以後,不能使用psiClass.add(field)添加代碼,要調用WriteCommandAction.runWriteCommandAction寫代碼,否則會拋出異常:
Must not change PSI outside command or undo-transparent action.
這時因爲Intellij Platform不允許在主線程中進行實時的文件寫入,而需要通過一個異步任務來進行。這時需要調用WriteCommandAction來寫相關的內容,如下:
WriteCommandAction.runWriteCommandAction(Project, new Runnable() {
@Override
public void run() {
//do something
}
});
在run方法中也是調用psiClass.add(field)等這類方法,只是需要使用WriteCommandAction.runWriteCommandAction包一層。