gpt4 book ai didi

java - 摆脱 Android UI 线程的繁重计算

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:59 24 4
gpt4 key购买 nike

我的 Android 应用程序使用了特别大的计算,它不断地使系统崩溃,因为它在 Activity 的 UI 线程上。我对多线程没有什么信心,所以我想获得一些关于如何正确执行它的提示。这是我的

class ActivtyName extends Activity{
boolean threadcomplete = false;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//stuff

Runnable newthread = new Runnable(){

@Override
public void run() {
doBigComputation();
threadcomplete=true;
}

};

newthread.run();

boolean b = true;
while(b){
if(threadcomplete){
b=false;
startTheApp();
}
}

}
}

现在,我很确定我所做的是不“正确的”。 (虽然它似乎有效。系统不会崩溃)。基本上,我不确定如何在没有这个 boolean 值 threadcomplete 的情况下告诉 UI 线程 newthread 已经完成计算。有没有“正确”的方法来做到这一点?

最佳答案

只是为了扩展 Marek Sebera 的评论,这里是关于如何在 AsyncTask 中完成它的框架。

private class BigComputationTask extends AsyncTask<Void, Void, Void> {

@Override
protected void onPreExecute() {
// Runs on UI thread
Log.d(TAG, "About to start...");
}

@Override
protected Void doInBackground(Void... params) {
// Runs on the background thread
doBigComputation();
}

@Override
protected void onPostExecute(Void res) {
// Runs on the UI thread
Log.d(TAG, "Big computation finished");
startTheApp();
}

}

并调用它:

BigComputationTask t = new BigComputationTask();
t.execute();

关于java - 摆脱 Android UI 线程的繁重计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8693778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com