2017-08-18 18 views
1

私のasmackライブラリにバグがあります。正しいasmackライブラリのバージョンとダウンロードアドレスを教えてください。

アプリで時折フラッシュバックが発生しました。詳細については、コードと画像の説明を参照してください。 (Lookup.refreshDefault)ネットワークの操作に関連して、メインスレッドはネットワーク操作を実行することはできませんonReceiveメソッドは、新しいスレッドを開始する必要がありますが、私はasmackライブラリのソースコードを見つけることができない、クラスファイルのみ。経験豊かな開発者にこの問題の解決方法を教えてください。

android.os.NetworkOnMainThreadException 
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273) 
    at java.net.InetAddress.lookupHostByName(InetAddress.java:431) 
    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 
    at java.net.InetAddress.getByName(InetAddress.java:305) 
    at org.xbill.DNS.SimpleResolver.<init>(SimpleResolver.java:56) 
    at org.xbill.DNS.SimpleResolver.<init>(SimpleResolver.java:68) 
    at org.xbill.DNS.ExtendedResolver.<init>(ExtendedResolver.java:266) 
    at org.xbill.DNS.Lookup.refreshDefault(Lookup.java:86) 
    at org.jivesoftware.smack.SmackAndroid$1.onReceive(SmackAndroid.java:26) 
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:879) 

Crash log screenshot

Error code location

答えて

1

あなたはUIやメインスレッド上でインターネットにアクセスしようとすると、このNetworkOnMainThreadExceptionが発生しました。

アンドロイドアプリケーションでインターネットにアクセスするには、AsyncTaskまたはサービスを作成する必要があります。

アクティビティにAsyncTaskを作成します。

class Refresh extends AsyncTask<Void, Void, Void> { 

protected Void doInBackground(String... params) { 
    Lockup.refreshDefault(); 
    } 
} 

と置き換えるLockup.refreshDefault();new Refresh().execute();

と、この行は、それがお役に立てば幸いです。

関連する問題