use*_*565 1 java multithreading android
我创建了以下后台线程:
public class loadSomeStuff extends AsyncTask <String, Integer, String>
{
@Override
protected String doInBackground(String... params) {
Intent i = new Intent("com.example.nadir_services.himan.class"); startActivity(i);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我还创建了一个按钮,我在其中调用此线程:
new loadSomeStuff().execute("");
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,每次按下这个按钮,它会创建一个新线程吗?如果是这样,为什么那么糟糕?我的意思是,会发生什么?
还有一个问题,我注意到这被称为"后台线程".这是否意味着有另一种方法来创建新线程?我只知道这种方式.
no,AsyncTask由4个线程的ThreadPool构造,默认情况下系统选择其中一个线程运行.
一般来说,如果你想避免内存问题,你应该从onClick初始化AsyncTask并从那里执行它,而不是每次都像这样创建一个新的:
private loadingTask = new LoadSomeStuff();
@Override
public void onClick(View v) {
loadingTask.execute("");
}
Run Code Online (Sandbox Code Playgroud)