0

私の Android アプリにはThread、確立されたインターネット接続 (3G/WIFI) があるときに実行される拡張クラスがあります。

アプリが読み込まれ、インターネット接続が確立されている場合は、次のようにクラスをインスタンス化します。

 MyThread thread = new MyThread(); //  (it calls its own start() method)

スレッドでは、接続が失われた場合、Thread. 走るなと言われましたがfinalize()、どうすればそれを破壊できthread == nullますか?


(thread == null)編集:私が尋ねた理由は、後で、接続が戻った場合にスレッドを再起動し、簡単だったかどうかを確認したいからです。フラグを使用して、スレッドを再起動する必要があることを示したり、スレッドが中断されたかどうかを確認したりできます。これまで有益なコメントをありがとうございました。

4

2 に答える 2

1

通常、サブクラスは作成しませんThread。を作成し、それをオブジェクトにRunnable渡します。さらに良いのは、です。ThreadExecutorService

ただし、スレッドが完了した後のクリーンアップについて心配する必要はありません。ガベージコレクターによって自動的に処理されます。自分のローカル参照をnullにしたい場合は、自分でnullにするか、もっと良いことに、それに固執しないでください。

new Thread( new Runnable() {
    public void run() {
        // put your stuff here
    }
} ).start();
于 2012-06-18T17:10:10.157 に答える
1

これを試して、

  1. A の場合、 e または にthread of execution will live until it has finished executing its run() method移動します。dead statthread pool

  2. run()を使用してメソッドを制御することを常にお勧めしboolean variableます。

    例えば:

       boolean isRunning = true;
    
       new Thread(new Runnable()
    
           {
    
       public void run()
    
          {
    
         while(isRunning)
    
             {
    
              // Keep doing your work here....
    
                   if (!isRunning){
    
                            break;
                        }
    
    
                  }
    
      }
    

    }).start();

于 2012-06-18T18:26:05.597 に答える