Android:两个或更多线程? (程序正在运行)

时间:2011-03-21 04:39:08

标签: android multithreading


我在Android中创建了一个样本/演示/测试程序,运行得非常好,如果你看到下面你会看到我创建了一个线程。现在我想创建另一个线程来处理另一个处理程序...因为我不能有两个run()方法......我该怎么做?

这是我的(工作 - 没有错误)计划:

package com.ryan1;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;

public class main extends Activity implements Runnable{

int level = 0;
int seconds_running=0;

TextView the_seconds,the_level;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    the_seconds = (TextView) findViewById(R.id.textview_seconds);
    the_level = (TextView) findViewById(R.id.textview_level);

        Thread thread = new Thread(this);
        Thread thread2 = new Thread(this);
        thread.start();
        thread2.start();
}

public void run() {

    while(seconds_running<500)
    {
        if(seconds_running %5 ==0){level++;}     

             try {
                 handler.sendEmptyMessage(0);
                 int a = 1000 - (level*100);
                 if(a<=100){a=25;}
                Thread.sleep(a);
                System.out.println("R "+Thread.currentThread());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    }

        }



private Handler handler = new Handler() {

                @Override

                public void handleMessage(Message msg) {

                    seconds_running++;
                    int a = 1000 - (level*100);
                    the_seconds.setText(" "+seconds_running);
                    the_level.setText(level+" "+a);
                }

        };



}

3 个答案:

答案 0 :(得分:5)

使用这样的匿名类。

    Thread thread2 = new Thread( new Runnable() {

        public void run() {
            // code here with your new handler
        }
    });

答案 1 :(得分:1)

制作两个扩展Thread的内部类。

为这两个类创建一个对象,并在这些对象上调用start。

答案 2 :(得分:1)

你建议你想要两个runnables,但你只定义了一个runnable,这是你的'主'类。所以你需要做的就是制作两个不同的runnable,这样每个runnable都可以拥有自己的代码来运行。

我会创建两个新类,比方说,Runnable1和Runnable2。我希望他们都实现runnable接口。然后,它们中的每一个都可以包含不同的代码以在单独的线程中运行。

最后,我会将您的线程创建/开始代码更改为:

  Thread thread = new Thread(new Runnable1());
  Thread thread2 = new Thread(new Runnable2());
  thread.start();
  thread2.start();