1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-08 00:16:09 +00:00

Back to save cached SimpleDateFormat instances to parse dates from server, to avoid huge performance problem in Android 2.x devices

This commit is contained in:
David A. Velasco 2014-07-10 12:24:31 +02:00
parent 0f23df1b7b
commit 9af57b477e

View File

@ -35,15 +35,17 @@ import android.net.Uri;
public class WebdavUtils { public class WebdavUtils {
public static final SimpleDateFormat DISPLAY_DATE_FORMAT = new SimpleDateFormat( public static final SimpleDateFormat DISPLAY_DATE_FORMAT = new SimpleDateFormat(
"dd.MM.yyyy hh:mm"); "dd.MM.yyyy hh:mm");
private static final String DATETIME_FORMATS[] = {
"yyyy-MM-dd'T'HH:mm:ss'Z'", private static final SimpleDateFormat DATETIME_FORMATS[] = {
"EEE, dd MMM yyyy HH:mm:ss zzz", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US),
"yyyy-MM-dd'T'HH:mm:ss.sss'Z'", new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US),
"yyyy-MM-dd'T'HH:mm:ssZ", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'", Locale.US),
"EEE MMM dd HH:mm:ss zzz yyyy", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US),
"EEEEEE, dd-MMM-yy HH:mm:ss zzz", new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US),
"EEE MMMM d HH:mm:ss yyyy", new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US),
"yyyy-MM-dd hh:mm:ss" }; new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale.US),
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.US)
};
public static String prepareXmlForPropFind() { public static String prepareXmlForPropFind() {
String ret = "<?xml version=\"1.0\" ?><D:propfind xmlns:D=\"DAV:\"><D:allprop/></D:propfind>"; String ret = "<?xml version=\"1.0\" ?><D:propfind xmlns:D=\"DAV:\"><D:allprop/></D:propfind>";
@ -56,11 +58,16 @@ public class WebdavUtils {
public static Date parseResponseDate(String date) { public static Date parseResponseDate(String date) {
Date returnDate = null; Date returnDate = null;
SimpleDateFormat format = null;
for (int i = 0; i < DATETIME_FORMATS.length; ++i) { for (int i = 0; i < DATETIME_FORMATS.length; ++i) {
try { try {
returnDate = new SimpleDateFormat (DATETIME_FORMATS[i], Locale.US).parse(date); format = DATETIME_FORMATS[i];
synchronized(format) {
returnDate = format.parse(date);
}
return returnDate; return returnDate;
} catch (ParseException e) { } catch (ParseException e) {
// this is not the format
} }
} }
return null; return null;