Android 分线程运行计算
我试图在一个新线程中运行一个计算,我只是不确定正确的方法。我不确定是否应该使用:Android 分线程运行计算,android,multithreading,Android,Multithreading,我试图在一个新线程中运行一个计算,我只是不确定正确的方法。我不确定是否应该使用: private Thread calcThread = new Thread(){ @Override public void run(){ calc(); } }; 然后在我想进行计算或应该进行以下操作时使用calcThread.run() new Thread(new Runnable() { public void run() { calc();
private Thread calcThread = new Thread(){
@Override
public void run(){
calc();
}
};
然后在我想进行计算或应该进行以下操作时使用calcThread.run()
new Thread(new Runnable() {
public void run() {
calc();
}
}).start();
每当我想计算的时候
哪一个更好,如果有的话
谢谢。像这样做吧
public class cal extends Thread {
public void run(){
calc();
}
}
cal c = new cal();
c.start();
只需像这样创建这个类的对象
public class cal extends Thread {
public void run(){
calc();
}
}
cal c = new cal();
c.start();
您可以在代码中的任何位置启动线程执行计算。基本相同。第二个稍微干净一些,IMHO,因为实现接口被广泛认为是比子类化框架类更好的实践。如果在遥远的将来,
Thread.run()
不再是线程入口点,该怎么办?不太可能,我知道…在Android的后台线程中,最简单的方法是异步任务
AsyncTask将处理在后台线程上运行计算,然后在UI线程上返回结果
private class DoCalculationTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
calc();
return null;
}
protected void onPostExecute(Void result) {
// Post results to main thread
}
}
私有类DoCalculationTask扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…arg0){
计算();
返回null;
}
受保护的void onPostExecute(void结果){
//将结果发布到主线程
}
}
我将继续并选择此作为我的答案。我必须添加一个处理程序来更新我的UI。我还必须使用.run()而不是.start(),因为它会被多次调用。它现在似乎起作用了。谢谢。如果你选择这个作为你的答案,一定要把洛克斯的答案标记为被接受的答案,这样他就可以得到认可。