1. 程式人生 > >Intellij 外掛開發-AndroidStudio (零)番外

Intellij 外掛開發-AndroidStudio (零)番外

前言:

主要記錄一些開發中遇到的異常處理,和特殊用法彙總。

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包一層。