Facebook授权不在Android异步任务或线程内工作
在Android中与facebook合作。有时,当我尝试在Android中授权Facebook时,我的应用程序正在实时设备中兑现。而不是在emulator中。我使用了Android Facebook SDK。所以我想线程可能会停止这一点。首先,我尝试了异步任务Facebook授权不在Android异步任务或线程内工作,android,facebook,android-asynctask,facebook-android-sdk,Android,Facebook,Android Asynctask,Facebook Android Sdk,在Android中与facebook合作。有时,当我尝试在Android中授权Facebook时,我的应用程序正在实时设备中兑现。而不是在emulator中。我使用了Android Facebook SDK。所以我想线程可能会停止这一点。首先,我尝试了异步任务 Activity act=this; private class fbwork extends AsyncTask<Facebook, Integer, String> { @Override protec
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";
}
生成错误:无法在未调用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();
}
}
同样的结果。有没有办法解决这个问题!!!!如何在真实设备中阻止应用程序崩溃。请提供帮助。Facebook授权使用访问事件线程的方法,因此您不需要在事件线程之外的其他线程中执行此方法
如果在正常事件线程中执行此方法时遇到问题,请指定该问题。我遇到了相同的问题。您必须尝试将此方法放入循环中
Looper.prepare();
new fbwork().execute(facebook);
Looper.loop();
我也有这个问题。我无法使AsyncTask代码正常工作 所以我最终使用了runOnUiThread。它可以在模拟器上运行,但不能在设备上运行,我使用的是HTC Desire Android SDK 2.2.2。不幸的是,我甚至不能使用Hackbook(Facebook的示例项目)登录Facebook 下面是使用runOnUiThread的代码:
正如我所说,我的应用程序在授权时在真实设备中崩溃了几次,有时不是每次都崩溃。而且它在emulator中也可以正常工作。所以我找不到崩溃的实际问题。你能告诉我Facebook.request(“我/朋友”,bundle)是否也使用任何类型的线程吗?
Looper.prepare();
new fbwork().execute(facebook);
Looper.loop();