0
我試圖得到一個 classObject .getNewInstance的新實例(時收到以下java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
)。我已閱讀異步任務:了java.lang.RuntimeException:內螺紋已不叫Looper.prepare無法創建處理程序()
一切涉及改變UI線程。這是這種情況嗎?如果是這樣,我該如何解決這個異常?
代碼(Example used):
public class MainActivityAsyncClass extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
postData(params[0]);
return null;
}
public void postData(String methodToRun) {
Class[] noParams = {};
try {
Class mainActivityClass = Class.forName("com.MainActivity");
Method asyncRun = mainActivityClass.getDeclaredMethod(methodToRun, noParams);
Object obj = mainActivityClass.newInstance(); //<-- Error is thrown here
asyncRun.invoke(obj, null);
} catch(Exception e){
Util.appendLog("Error in async task. Exception: " + e.getMessage() + " " + e.getStackTrace());
}
}
}
首先你不應該創建活動的實例dervied從代碼級... – Selvin
回去了幾步:你想達到什麼樣的?我相信有更好的方法來做到這一點。 – Henry
同意@Henry。看起來你正試圖從你的主要活動在一個單獨的線程上執行一些方法?即使你想這樣做,我想這種邏輯移動到另一個類,並使用接口/實現定義你真的想調用的,而不是動態地找出需要調用哪些方法。如果您希望因執行任何操作而更新主活動,請使用onPostExecute執行此操作。 – Raghu