-1

私のアプリでは、操作に asynctask を使用していますが、タイムアウトの場合にタスクをキャンセルするためにハンドラーも使用しています。

これは私のハンドラー操作です

Handler mHandler = new android.os.Handler() {

        @Override
        public void handleMessage(Message msg) {
            task.cancel(true);
        }
    };

    Message msg = new Message();
    msg.arg1 = 0;
    mHandler.sendMessageDelayed(msg, 1000);

これは私の asynctask start です

    final findIpTask task = new findIpTask(1, 2);
    task.execute();

そして私のasynctaskで私は持っています

protected void onCancelled() {

        running = false;
        dialog.dismiss();
                     //some alert dialog for time-out

2.33 エミュレーターでは正常に動作していますが、4.0 エミュレーターでアプリを実行しても停止しません。理由と解決策を知っている人はいません。

4

1 に答える 1

0

ハンドラ スレッドが停止またはキャンセルされていないため、AsyncTask は停止しません。

handler use timer threadを使用する代わりに、以下のスニペットに示すように、スレッドと asyncTask を停止できます。

 Timer myTimer = new Timer();
  myTimer.schedule(new TimerTask() {
     @Override
     public void run() {
//Your Stuffs
 }
  }, 0, 1000); // put your delay here 

           
if(ButtonStopped == true){
     myTimer .cancel();
     myTimer .purge();
     //your stuffs
     task.cancle();// call here for stopping your asyncTask
     }else{
         //your stuffs
                  
            } 

詳細については、この Android 開発者向けリンク にアクセスしてください

于 2013-01-03T12:36:25.117 に答える