я использую обработчик, чтобы получить значение 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 более двух недель, и это единственный способ, который работал для меня, теперь я просто хочу сохранить код в базе данных. – asmgx
Как я уже сказал, я не понимаю, почему, но это может быть недостаток понимания с моей стороны. Откуда берется «GCMHelper» и что он делает? Похоже, что код пытается сделать что-то синхронно в главном (UI) потоке. Но если у вас уже есть рабочий поток, почему дополнительный 'AsyncTask'? Или, но это коротко: я не понимаю, но почему-то это выглядит неправильно. – dhke