如何在android中使用多个线程的多个按钮?

时间:2013-06-21 04:10:49

标签: java android multithreading performance thread-safety

我一直在研究这个项目已经有一段时间了。我被困在如何处理我的多个按钮问题。我有三个按钮,需要启动不同的线程,但我看了谷歌的线程和多线程的东西,我无法找到我正在寻找的答案。 根据我的理解,public void run()只能在一个类中为线程调用一次?我如何创建一个类中代码不同的多个线程?

我所看到的最能解决我问题的例子是:

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.Line:
       // Call to Thread line
        break;
    case R.id.Enter:
        //Call to Thread Enter
            break;
    case R.id.arc
    //Call to Thread Arc
        } 

线程线程示例并输入线程:

        Thread enter = new Thread() {
        public void run() {
    DrawingUtils call = new DrawingUtils();
    EditText cl = (EditText) findViewById(R.id.editText1);
    String in = cl.getText().toString();
    call.setInputCoords(in);
    notifyAll();
        }

};

        Thread line = new Thread() {
        public void run() {
            info.setText("Enter X,Y,Z for Point 1");
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            call.addLine();
            info.setText("Enter X,Y,Z for Point 2");
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            call.addLine();


        }
    };
    line.start();

2 个答案:

答案 0 :(得分:1)

创建其他扩展线程的内部类,如

    class Line extends Thread {
        public void run() {
    DrawingUtils call = new DrawingUtils();
    EditText cl = (EditText) findViewById(R.id.editText1);
    String in = cl.getText().toString();
    call.setInputCoords(in);
    notifyAll();
        }

};

现在开始使用new Line().start()

答案 1 :(得分:0)

您无法在您启动的新主题上正常更新UI ..请在开发前阅读有关UI的更多信息..... this may help you

在代码中为文本视图设置测试

info.post(new Runnable() {
 @Override
    public void run() {
       info.setText("Enter X,Y,Z for Point 1"); 
    }
});