Java 如何使用线程减少android应用程序加载时间?

Java 如何使用线程减少android应用程序加载时间?,java,android,multithreading,Java,Android,Multithreading,我正在尝试制作一个应用程序,它获取运行中的应用程序属性,如(进程名称、图标、内存等),并在listview中显示它们 因为我在主线程中执行它们,所以这花费了太多的时间。 如何在此示例循环中创建更多线程? (我是android编程新手) //要并行运行此循环 for(int i=0;i

我正在尝试制作一个应用程序,它获取运行中的应用程序属性,如(进程名称、图标、内存等),并在listview中显示它们

因为我在主线程中执行它们,所以这花费了太多的时间。 如何在此示例循环中创建更多线程? (我是android编程新手)

//要并行运行此循环
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();