Facebook разрешается не работать внутри Android Asynctask или Thread
-
27-10-2019 - |
Вопрос
Работа с Facebook в Android. Иногда мое приложение обналичивает устройство в режиме реального времени, когда я пытался авторизовать Facebook в Android. Не в эмуляторе. Я использовал Android Facebook SDK. Так что я думал, что нить может остановить это. Первый попробовал Asynctask
Activity act=this;
private class fbwork extends AsyncTask<Facebook, Integer, String>
{
@Override
protected String doInBackground(Facebook... para)
{
// TODO Auto-generated method stub
Log.d(tagg, "Entered async");
if(loginflag==0)
{
try
{
para[0].authorize(act, PERMISSIONS, new LoginDialogListener());
}catch(Exception ex)
{
Log.d(tagg,ex.getMessage());
}
Log.d(tagg, tagg.toString());
}
else
{
try {
logout();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "0";
}
Код вызова:
new fbwork().execute(facebook);
Создайте ошибку: не может создать обработчик внутри потока, который не назвал looper.prepare ()
Так что попробовал обычный путь.
public void loginprocesure() throws MalformedURLException, IOException
{
final Activity ac=this;
if(loginflag==0)
{
new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
facebook.authorize(ac, PERMISSIONS, new LoginDialogListener());
}
}).start();
}
else
{
logout();
}
}
Снова тот же результат. любой способ исправить это !!!! Как остановить сбое применения в реальном устройстве. Пожалуйста помоги.
Решение
Я столкнулся с той же проблемой. Вы должны попытаться поместить этот метод в цикл
Looper.prepare();
new fbwork().execute(facebook);
Looper.loop();
Другие советы
Facebook Authorize использует методы, какой поток события доступа, поэтому вам не нужно выполнять этот метод в другой поток, чем поток событий.
Если вы столкнетесь с проблемой в выполнении этого метода в обычном потоке событий, укажите это проблему.
У меня тоже эта проблема. Я не мог заставить код Asynctask работать.
Так что я закончил тем, что использовал Runonuithread. Он работает на эмуляторе, но не на устройстве, я использую HTC Desire Android SDK 2.2.2. К сожалению, я даже не могу войти в Facebook, используя HackBook (образец проекта Facebook).
Вот код, который использует Runonuithread:Приложение Android сбоятся после обмена с помощью диалогов Facebook