-1

アプリケーションで NetworkOnMainThreadException にも直面しましたが、解決方法がわかりません。私はゲッターメソッドを持つクラスを持っています。お気に入り:

public ArrayList<News> get(int i){
   // get the list of news from a HTML on the net. The news are split up into web pages   on the site
   // and i is the page number
   return NewsParser(i);
}

Android は例外をスローするので、別のスレッドで HTML コンテンツをダウンロードするダウンローダ クラスのアイデアを思いつきました。

pubic ArrayList<News> get(int i){
   Downloader dl = new Downloader(i);
   String HTMLcontent = dl.getContent(); <-- AsyncTask starts in getContent()
   return NewsParser(HTMLcontent); <-- What happens here in the main thread???
}

この問題のアイデア/ベストプラクティスはありますか?

4

3 に答える 3

0

スレッド内で get メソッドを実行し、

    new Thread(new Runnable() {

        @Override
        public void run() {
            // call get method here

        }

    }).start();
于 2013-08-27T21:16:43.113 に答える
0

Honeycomb (Android 3.0) 以降、MainThread で Networking Operations を使用して電話のフリーズを回避することはできません。これは、アプリをレスポンシブにするために重要です。

より詳しい情報:

NetworkOnMainThreadException

応答性

于 2013-08-27T21:48:05.810 に答える