2016-07-27 9 views
0

Ich bin eine Android-Anwendung entwickeln, wenn ich ein Fragment wählen, ich diesen Code in „OnActivityCreated“ setzen, wie:Wie kann die App-Leistung gesteigert werden?

@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(); 

Ladeliste() wird verwendet, um Daten aus der Datenbank zu erhalten und es auf Listenansicht zu setzen. Meine Anwendung lädt sehr langsam, wenn ich Fragment auswähle. Gibt es sowieso, ich könnte tun, um die Leistung zu erhöhen, wie oben Code an anderen Ort setzen.

Schätzen Sie Ihre Hilfe!

Edit: Ladeliste() Code:

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; 
} 
+0

... wir müssten den Code für LoadList() kennen, um diese Frage zu beantworten – EpicPandaForce

+0

die Ladezeit hängt von der Logik ab, die Sie in der LoadList() verwendet haben. Da Sie es von db erhalten, optimieren Sie die Abfrage, die Sie verwendet haben, um Daten zu erhalten, und halten Sie Ihre SQLiteOpenHelper-Klasse als Singleton – LvN

+0

Edited mein Beitrag. – Huy

Antwort

-2

können Sie die AsyncTask verwenden, um Daten zu laden.

Verwandte Themen