我在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);
}
};
}
答案 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();