如何提高应用性能?

Posted

技术标签:

【中文标题】如何提高应用性能?【英文标题】:How to increase app performance? 【发布时间】:2016-07-27 08:54:28 【问题描述】:

我正在开发一个android应用程序,当我选择一个片段时,我将这些代码放在“OnActivityCreated”中,例如:

 @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) 
    super.onActivityCreated(savedInstanceState);
    btnAdd = (ImageButton) getActivity().findViewById(R.id.imageButtonTime);
    txtTime = (TextView) getActivity().findViewById(R.id.textViewTime);
    txtTime.setText("");
    listView = (ListView) getActivity().findViewById(R.id.listView);
    time_control = new Time_Control(LoginActivity.db.getConnection());
    accountID = LoginActivity.Account_Id;
    calendar = Calendar.getInstance();
    mYear = calendar.get(Calendar.YEAR); // current year
    mMonth = calendar.get(Calendar.MONTH); // current month
    mDay = calendar.get(Calendar.DAY_OF_MONTH); // current day
    txtTime.setText(mDay + "/" + (mMonth + 1) + "/" + mYear);
    sDate = mYear + "-" + (mMonth + 1) + "-" + mDay;
    LoadList();

LoadList() 用于从数据库中获取数据并将其放在列表视图中。 当我选择片段时,我的应用程序加载非常缓慢。无论如何我可以做些什么来提高性能,比如把上面的代码放到其他位置。

感谢您的帮助!

编辑:LoadList() 代码:

 public ArrayList<Time> LoadTime(int accId, String date) 
    ArrayList<Time> arrayList = new ArrayList<Time>();
    try 
        PreparedStatement query = connection.prepareStatement("exec sp_excutedtask_load ?,?");
        query.setInt(1, accId);
        query.setString(2, date);
        ResultSet resultSet = query.executeQuery();
        while (resultSet.next()) 
            int id = resultSet.getInt("ID");
            String tagName = resultSet.getString("TagName");
            String taskName = resultSet.getString("TaskName");
            int esHrs = resultSet.getInt("EsHour");
            int esMin = resultSet.getInt("EsMinute");
            int acHrs = resultSet.getInt("AcHour");
            int acMin = resultSet.getInt("AcMinute");
            String start, end;
            if (resultSet.getTime("Start") == null) 
                start = "";
             else 
                start = resultSet.getTime("Start").toString();
            
            if (resultSet.getTime("End") == null) 
                end = "";
             else 
                end = resultSet.getTime("End").toString();
            
            int run = resultSet.getInt("Running");
            int done = resultSet.getInt("Done");
            Time time = new Time(id, tagName, taskName, esHrs, esMin, acHrs, acMin, start, end, run, done);
            arrayList.add(time);
        
     catch (SQLException e) 
        e.printStackTrace();
    
    return arrayList;

【问题讨论】:

...我们需要知道 LoadList() 的代码才能回答这个问题 加载时间取决于您在 LoadList() 中使用的逻辑。由于您是从 db 获取的,因此请优化用于获取数据的查询并将 SQLiteOpenHelper 类保持为单例 【参考方案1】:

您可以使用AsyncTask 加载数据。 https://developer.android.com/reference/android/os/AsyncTask.html

【讨论】:

以上是关于如何提高应用性能?的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 Angular2 应用程序的加载性能?

如何提高PHP应用的性能

如何提高 Sencha Touch 2.x 应用程序的性能

提高 ASP.NET Web 应用性能

(转载)提高ASP.NET Web应用性能的技巧

如何使用 HAML 提高 Sinatra 性能?