1

Android 2.3.4、2.3.6、および 2.3.7 では正常に動作するアプリがありますが、Android 4.1.2 または 4.2.2 では動作しません (これ以上デバイスがありません)。

アプリは結果を返すjarファイルを呼び出します。2.3.7でアプリをテストすると、jarを呼び出して結果を取得しますが、Android 4.1.2で実行すると強制的に閉じます。アプリは同じで、OSが違うだけというのはかなり奇妙です。

jar ファイルはインターネットへの呼び出しを行います。これが間違いである可能性はないと思います

みんなありがとう!

4

2 に答える 2

1

jar ファイルはインターネットへの呼び出しを行います。これが間違いである可能性はないと思います

=> 申し訳ありませんが、ここで問題が発生しました。あなたのアプリは < 2.3 バージョンでは正常に動作していますが、> 2.3 バージョンでは動作していないとのことですが、この失敗の背後にある理由はNetworkOnMainThreadException.

では、2.3 バージョン以上のデバイスでアプリを実行するたびにこの例外が発生するのはなぜですか?

=>NetworkOnMainThreadExceptionアプリケーションがメイン スレッドでネットワーク操作を実行しようとするたびに発生します。

ソリューション:

以下は、この問題を解決するための 2 つの解決策です。

1) 標準的な方法は、AsyncTaskを実装して Web サービスを呼び出すことです。

2) これを処理する怠惰な方法は、次のチェックをオンにすることです。

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
于 2013-04-05T10:52:33.850 に答える
0

Android バージョン 4.0 (ICS) 以降では、ネットワーク操作は AsynTask で実行する必要があります。AsyncTask でコードを実行します。

private class Task extends AsyncTask<Void, Void, Void> {

    private Exception exception;

    @Override
    protected Void doInBackground(Void... urls) { 
        /// run your network operations here     
        return null;         
    }

    @Override
    protected void onPostExecute(RSSFeed feed) {

   }     
}

 new Task ().execute();
于 2013-04-05T10:30:11.447 に答える