Intellij 外掛開發-AndroidStudio (零)番外
阿新 • • 發佈:2018-12-09
前言:
主要記錄一些開發中遇到的異常處理,和特殊用法彙總。
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包一層。