1

私は、1 つのボタンをクリックするとハンドラーが 2 秒ごとにトースターが表示される Android アプリケーションを作成しました。他の方法でも同じですが、クリックすると実行中のスレッドを停止したい停止ボタンがあります

これは私のコードです

private final int  FIVE_SECONDS = 2000;


    public void scheduleSendLocation() {
        handler.postDelayed(new Runnable() {
            public void run() {
                sendLocation();          // this method will contain your almost-finished HTTP calls
                handler.postDelayed(this, FIVE_SECONDS);
            }
        }, FIVE_SECONDS);
    }


    protected void sendLocation() {
        Toast.makeText(getApplicationContext(), "Your Location is ", Toast.LENGTH_SHORT).show();
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btnShowLocation = (Button) findViewById(R.id.btnShowLocation);
        stop = (Button) findViewById(R.id.stop);

        btnShowLocation.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {        
                scheduleSendLocation();

            }
        });

        stop.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {        
        // what to write here
            }
        });

    }
4

2 に答える 2

5

次のコードを呼び出してみてください

    stop.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {        
            handler.removeCallbacks(runnable);
        }
    });

runnablepostDelayed の呼び出し中に追加したランナブルはどこにありますか。runnableメッセージ キューにあるの保留中の投稿はすべて削除されます。

于 2013-04-11T12:49:40.847 に答える
0

これを試して:

stop.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {        
             myHandlerThread.interrupt();
             myHandlerThread = null;
        }
    });
于 2013-04-11T12:49:21.187 に答える