-1

クラッシュする理由がわかったので、URLを取得できず、askctaskがバックグラウンドで動作し続けたのですが、URLを開く間隔を設定するにはどうすればよいですか?一定時間後にasynctaskを停止するか、asynctaskを再起動します。offfwifiofcourseアプリがクラッシュした場合は問題ありませんか?

on create.....(
 ws=new WeatherSet();
new DownloadImageTask().execute(queryString);
if set a debug point here works magically :) 
  private class DownloadImageTask extends AsyncTask<String, Void, String> {
         protected String doInBackground(String... urls) {
               try {
                URL rock=new URL(urls[0]);

                /* Get a SAXParser from the SAXPArserFactory. */
                SAXParserFactory spf =   
                                    SAXParserFactory.newInstance();
                SAXParser sp = spf.newSAXParser();

                /* Get the XMLReader of the SAXParser we created. 
                XMLReader xr = sp.getXMLReader();

                /*
                 * Create a new ContentHandler and apply it to the
                 * XML-Reader
                 */
                WeatherHandler gwh = new   
                                    WeatherHandler();
                xr.setContentHandler(gwh);

                /* Parse the xml-data our URL-call returned. */

                xr.parse(new InputSource(rock.openStream()));


            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

             return "";
         }

         protected void onPostExecute(String result) {

            weather();

         }
4

2 に答える 2

2

これは、アクティビティで初期化するオブジェクトが必要な場合に発生し、そのことがバックグラウンドスレッドで発生します。

スレッドがタスクを完了しておらず、アクティビティが有効になっているため、エラーが発生します。そして、bgスレッドによって初期化されると想定されるオブジェクトはまだ実行されていません。

そのオブジェクトを識別し、非同期のpostExecutionの後に操作を実行する必要があります。

デバッグでは、スレッドではなくアクティビティにブレークポイントを設定したため、完全に機能しています。そのため、スレッドはそのタスクを完了し、オブジェクトが初期化されます。

この助けを願っています!

于 2012-05-30T04:48:13.410 に答える
0

eデバイスで実行すると、一部のリソースが不足しているように見えます。これが、アクティビティ自体を開始できない理由である可能性があります。後の段階で停止している場合は、スレッドに問題がある可能性があります。したがって、アクティビティ全体を1行ずつデバッグしてみてください。または、すべての行の後にログを配置すると、問題が発生するポイントに到達します。

于 2012-05-30T04:52:15.060 に答える