Java 如何快速开发我的android应用程序

Java 如何快速开发我的android应用程序,java,android,json,oop,optimization,Java,Android,Json,Oop,Optimization,在我的android应用程序中,我在一个类中使用了5个API,在onCreate中逐个调用它们,但这会使我的应用程序变慢,如何优化我的代码使其变快 我的代码是这样的 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); API1(

在我的android应用程序中,我在一个类中使用了5个API,在onCreate中逐个调用它们,但这会使我的应用程序变慢,如何优化我的代码使其变快

我的代码是这样的

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

      API1();
      API2();
      API3();
      API4();
      API5();
   }

    // all the Apis are call in onCreate

  public void API1() {
            FetchData fetch = new FetchData(this);
            fetch.response = new FetchListener() {
        @Override
        public void fetchFinish(String output) {
            try {
                JSONObject jobjOUT = new JSONObject(output);

                JSONArray jsarray = jobjOUT.getJSONArray("details");

                for (int i = 0; i < jsarray.length(); i++) {
                    JSONObject obj = jsarray.getJSONObject(i);
                    String a = obj.getString("abc");
                }

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    try {
        fetch.execute("http://example.com/api/something.php?param=xyz");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

  }
  public void API2() {
     // same code here
  }
  public void API3() {
     // same code here
  }
  public void API4() {
     // same code here
  }
  public void API5() {
     // same code here
  }

 }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
API1();
API2();
API3();
API4();
API5();
}
//所有API都是在onCreate中调用的
公共图书馆1({
FetchData fetch=新的FetchData(此);
fetch.response=newfetchlistener(){
@凌驾
公共void fetchFinish(字符串输出){
试一试{
JSONObject jobjOUT=新的JSONObject(输出);
JSONArray jsarray=jobjOUT.getJSONArray(“详细信息”);
对于(int i=0;i
我的问题是我是否可以同时调用所有API,而不是逐个调用它们。请给我一些建议来优化我的代码。
谢谢你

你能把APIx()调用放到一个可运行的任务中吗

class MyClass {

    public boolean ready = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        handler = new Handler();

        final Runnable r = new Runnable() {
            public void run() {
                API1();
                API2();
                API3();
                API4();
                ready = true;
            }
        };

        handler.postDelayed(r, 100);

    }
}

FetchData类是某种可运行的吗?如果它是一个异步任务(看起来像),那么问题可能在于侦听器的位置。如果您在doInBackground以外的任何回调中调用它,监听器将被执行到UI线程中。即使假设所有api调用都是异步的,也会产生瓶颈。 性能损失的另一个原因是等待执行的任务太多。避免此类问题的一个好方法是在处理可运行文件时使用专用的ThreadPoolExecutor,并在asynctasks中使用executeOnExecutor(AsyncTask.ThreadPoolExecutor)方法

如果调用不是异步的,那么必须使它们异步。这意味着,在一个独立的并行线程中执行所有与ui无关的代码,这样在进行所有调用时ui不会被阻塞。看看


(我是开发人员),具体来说,是doInBackground方法(第994行)。如您所见,所有Rest调用代码、序列化代码和异步回调都在这个阶段执行。onPostExecute阶段仅执行同步侦听器(基本上与UI相关),以减少UI线程的工作负载。您可以在FetchData类中执行完全相同的操作。

尝试使用
线程池执行器
参考和了解。通过使用
线程池执行器
,您可以同时运行多个任务,也可以说是并行的

private void startAsyncTaskInParallel(MyAsyncTask task) {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    else
        task.execute();
}

你可以马上给他们打电话。Android支持多线程,请使用它。谢谢@Shubhank。但是你能告诉我如何使用多线程吗?我是编程新手。我尝试了这个处理程序,但结果是一样的。不要在主线程上做冗长的处理,否则它会阻塞你的UI。我使用Log.e(“abc”,result);在每一行之后,它都会使处理速度变慢。这仍然会在主线程上运行API调用,只是稍晚一点。它工作正常,但并不完全符合我的客户对我的期望。谢谢。这就是我要找的,让我试试这个\