Java 如何使用线程减少android应用程序加载时间?
我正在尝试制作一个应用程序,它获取运行中的应用程序属性,如(进程名称、图标、内存等),并在listview中显示它们 因为我在主线程中执行它们,所以这花费了太多的时间。 如何在此示例循环中创建更多线程? (我是android编程新手)Java 如何使用线程减少android应用程序加载时间?,java,android,multithreading,Java,Android,Multithreading,我正在尝试制作一个应用程序,它获取运行中的应用程序属性,如(进程名称、图标、内存等),并在listview中显示它们 因为我在主线程中执行它们,所以这花费了太多的时间。 如何在此示例循环中创建更多线程? (我是android编程新手) //要并行运行此循环 for(int i=0;i
//要并行运行此循环
for(int i=0;i
尝试使用多个异步任务,并使用task.executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)
执行任务,或使用多个线程并行处理
异步任务
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
//would like to run this loop in parallel
//You can also start threads
for (int i = 0; i < processes.size(); i++) {
// calculations
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
newasynctask(){
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…参数){
//要并行运行此循环吗
//您还可以启动线程
for(int i=0;i
使用线程
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < processes.size() /2; i++) {
// calculations
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = processes.size() /2; i < processes.size(); i++) {
// calculations
}
}
});
thread1.start();
thread1.start();
threadthread1=新线程(new Runnable(){
@凌驾
公开募捐{
for(int i=0;i
您好,我认为您需要迭代一个循环,即从任何Web服务获取的数据。
-基本上,UI更改所需的所有长时间运行的进程都可以在AsyncTask中运行,这将创建后台线程。
类AsyncExample扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(Void…参数){
//长期运行的任务在此块中运行的是什么
//要并行运行此循环吗
for(int i=0;i
谢谢您的回复。。我尝试了这两种方法,但它在AsyncTask中不显示列表,在线程中崩溃。
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < processes.size() /2; i++) {
// calculations
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = processes.size() /2; i < processes.size(); i++) {
// calculations
}
}
});
thread1.start();
thread1.start();
Hi I think you have one loop to iterate which is the data got from any Web Service.
- Basically all the long running process which are need for UI changes can be run inside the AsyncTask, which will create background threads.
class AsyncExaple extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
//What ever the long running tasks are run inside this block
//would like to run this loop in parallel
for (int i = 0; i < processes.size(); i++) {
// calculations
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
};
To call this AsyncTask do as follows
AsyncExaple asyncExaple = new AsyncExaple();
asyncExaple.execute();
If you still want to use the Threads use below code:
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();