我得到一個小問題:我需要在Android上使用cocos2d-x
中的異步任務。cocos2d-x:線程
private void parseJSONJava() throws ClientProtocolException, IOException, JSONException
{
STAJSONParser jPars = new STAJSONParser();
jPars.makeHttpRequest(String.format("%s/app/%s/json",STA_URL,STA_APP_UID));
}
但此代碼崩潰的應用程序與錯誤Can't create handler inside thread that has not called Looper.prepare()
。我解決這個問題,加入runOnUiThread
:
me.runOnUiThread(new Runnable(){
public void run(){
STAJSONParser jPars = new STAJSONParser();
jPars.makeHttpRequest(String.format("%s/app/%s/json",STA_URL,STA_APP_UID));
}
});
當「我」是我的活動。 代碼從STAJSONParser
:
public JSONObject makeHttpRequest(String url) {
AsyncGetJson Task= new AsyncGetJson(url);
try {
return Task.execute().get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
AsyncGetJson
任務的一個簡單的AsyncTask,從服務器獲取JSON。 所以,我的問題是:這個解決方案是對/錯?或者你可以給我其他解決方案?
是的,這是正確的(和我相信這是最簡單的方法。另一種方法是,在C++中使用libcurl) –