0

サー、インターネットに接続されていない場合、私はメッセージを処理しようとしています。ただし、ネットワーク接続がある場合でもダウンロードを続行すると、null例外エラーが発生します。最初はネットワーク接続エラーのメッセージが表示されますが、yesを押すと例外エラーメッセージが表示されます。このケースを処理するとき、さらに何を処理しますか?

   timer = new Timer();
    boolean isOnline = WebServiceHandler.isOnline(this);
    if (isOnline) {
        startDownloadTask();
     task = new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                int progress = downloadProgressBar.getProgress();
                notification.contentView.setProgressBar(R.id.pb, downloadProgressBar.getMax(), progress, false);
                nm.notify(notificationID, notification);
            }
        };

        timer.schedule(task, 10, 500);

    } else {
        connectionErrorDialog.show();
        onDestroy();


    }

}    




@Override
public void stopDownloadTask() {
    downloadGoodListTask.cancel(true);
    downloadGoodListTask.setActivityIsRunning(false);
    downloadGoodListTask = null;

}


 protected void onDestroy() {
    super.onDestroy();
    Log.i("Download Activity", "starting to destroy");
    //timer.cancel();


    wheelProgressBar.destroyDrawingCache();
    downloadProgressBar.destroyDrawingCache();
    finishDialog.dismiss();
    connectionErrorDialog.dismiss();

    downloadProgressBar = null; 
    wheelProgressBar = null;
    progressTextView = null;
    downloadingTextView = null;
    finishDialog = null;
    connectionErrorDialog = null;        
    //timer = null;     
    nm.cancel(notificationID);

    nm = null;
    notification = null;
    /*downloadTask.cancel(true);
    downloadTask.activityIsRunning = false;
    downloadTask = null;*/
    stopDownloadTask();
    timer.cancel();        
    System.gc();

    Log.i("Download Activity", "destroyed");
}


@Override
public void stopDownloadTask() {
    downloadGoodListTask.cancel(true);
    downloadGoodListTask.setActivityIsRunning(false);
    downloadGoodListTask = null;

}
4

2 に答える 2

2

UI スレッドの外部から Android UI ツールキットにアクセスしないでください。runOnUIThread メソッドを使用するか、メッセージを Handler に送信するか、AsyncTask を使用します。

于 2012-07-27T08:49:26.670 に答える
0

例外は、downloadGoodListTask が null であるためです。いずれかの値に初期化するか、stopDownloadTask() で例外を処理する必要があります。

于 2012-07-27T09:41:45.663 に答える