Facebookは、Android asynctaskまたはスレッド内で動作しないことを許可します
-
27-10-2019 - |
質問
AndroidでFacebookを使用しています。 AndroidでFacebookを承認しようとしたときに、私のアプリケーションがリアルタイムデバイスで現金化されている場合があります。 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は、イベントスレッドにアクセスするメソッドを使用するため、このメソッドをイベントスレッドよりも別のスレッドに実行する必要はありません。
通常のイベントスレッドでこのメソッドの実行で問題に直面している場合は、問題を指定します。
私もこの問題を抱えています。 Asynctaskコードを動作させることができませんでした。
そこで、runonuithreadを使用することになりました。エミュレータで動作しますが、デバイスではなく、HTC Desire Android SDK 2.2.2を使用しています。残念ながら、hackbook(Facebookのサンプルプロジェクト)を使用してFacebookにログインすることさえできません。
runonuithreadを使用するコードは次のとおりです。Androidアプリは、Facebookダイアログを使用して共有した後にクラッシュします