我使用的處理程序來獲取GCM值 我想在我的數據庫更新此值內誤差Looper.prepare()線程
所以我打電話的AsyncTask從處理程序
,但我得到這個錯誤
了java.lang.RuntimeException:無法內螺紋已不叫Looper.prepare創建處理程序()
我檢查了其他的解決辦法,他們說我必須把代碼中的run()的部分我已經做..
這是代碼,
private void GetGCM(final String UserID) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
GCMHelper gcmRegistrationHelper = new GCMHelper(getApplicationContext());
String gcmRegID = "";
gcmRegID = gcmRegistrationHelper.GCMRegister("123456");
// Update using Web Service
try {
UpdateGCMWSTask updateGCMWSTask = new UpdateGCMWSTask();
updateGCMWSTask.execute(UserID, gcmRegID);
// ************ HERE IS THE ERROR ***********************
}catch (Exception e)
{
e.printStackTrace();
}
} catch (Exception bug) {
bug.printStackTrace();
}
}
});
thread.start();
}
我不太相信這個代碼特定部分需要一個明確的後臺線程所有... – dhke
我一直在嘗試GCM代碼超過2個星期,這是我工作的唯一方式,現在我只想將代碼保存在數據庫中。 – asmgx
正如我所說,我不明白爲什麼,但也許這是我的缺乏理解。 'GCMHelper'從哪裏來,它有什麼作用?它看起來像代碼嘗試在主(UI)線程上做一些同步操作。但是,如果你已經有一個工作線程,爲什麼額外的'AsyncTask'?或者但它簡短:我不明白,但不知怎的,它看起來不對。 – dhke