Den X10 mini pro jeg tester på nægter at give mig output i Logcat'en i Eclipse. Af samme grund har jeg aldrig rigtigt brugt telefonen til test. Det eneste man ser er:
logcat read: Invalid argument
Men nu havde jeg en bug, som kun gjaldt for X10 mini pro.
Jeg har opgivet at få log via Eclipse, men kan (for det meste) få logdata ved at bruge følgende kommandoer:
adb logcat -c
adb logcat -d
-c tømmer logcat'en,
-d "dumper" loggen.
Jeg har lavet en Android app, som fungerer perfekt på Android 2.1 og 2.2.
Men da jeg testede på en HTC Magic (Andrid 1.6) virkede intet og appen så ud til at fryse for til sidst at komme med "Force Close/Wait" dialogen.
Tager man et kig i Logcat'en, ser man dette:
05-30 10:06:29.359: INFO/Resources(1272): Loaded time zone names for en_US in 1147ms.
05-30 10:06:30.519: INFO/Resources(1272): Loaded time zone names for en_US in 1152ms.
05-30 10:06:30.959: DEBUG/dalvikvm(1272): GC freed 11832 objects / 630224 bytes in 113ms
05-30 10:06:31.799: INFO/Resources(1272): Loaded time zone names for en_US in 1254ms.
05-30 10:06:32.909: INFO/Resources(1272): Loaded time zone names for en_US in 1103ms.
05-30 10:06:34.029: INFO/Resources(1272): Loaded time zone names for en_US in 1092ms.
05-30 10:06:34.429: DEBUG/dalvikvm(1272): GC freed 16045 objects / 698584 bytes in 112ms
05-30 10:06:35.189: DEBUG/dalvikvm(531): GC freed 117 objects / 5152 bytes in 1638ms
05-30 10:06:35.249: INFO/Resources(1272): Loaded time zone names for en_US in 1203ms.
05-30 10:06:36.359: INFO/Resources(1272): Loaded time zone names for en_US in 1088ms.
05-30 10:06:37.479: INFO/Resources(1272): Loaded time zone names for en_US in 1105ms.
05-30 10:06:37.869: DEBUG/dalvikvm(1272): GC freed 16038 objects / 694744 bytes in 106ms
05-30 10:06:38.699: INFO/Resources(1272): Loaded time zone names for en_US in 1205ms.
Der er mange spildte sekunder der. Det ser ud til at java.util.Date's toString() er årsagen (link:
http://stackoverflow.com/quest...en-us or
http://code.google.com/p/and...=1188.
Løsningen skulle være at bruge
android.text.format.DateFormat. I mit har jeg
Date i et
JSONArray (kommer fra et API kald) og det ser ud til
toString() bliver kaldt når
Date bliver tilføjet
JSONArray'et.
Opdatering 2011-05-31 14:44:
Her er min endelige løsning:
public class Date extends java.util.Date {
private static final long serialVersionUID = -8661761295050677789L;
public Date(){
super();
}
public Date(long l){
super(l);
}
@Override
public String toString() {
return "";
}
@Override
public String toGMTString() {
return "";
}
@Override
public String toLocaleString() {
return "";
}
}
Ja, det er ikke nogen god løsning.
Følgende kode kan give en fejl, hvis
html indeholder #, %, \ eller ?.
WebView webView = (WebView)findViewById(R.id.webview);
webView.loadData(html, "text/html", "utf-8");
I Android dokumentationen står der:
A String of data in the given encoding. The date must be URI-escaped -- '#', '%', '\', '?' should be replaced by %23, %25, %27, %3f respectively.
Et quickfix kunne se således ud:
WebView webView = (WebView)findViewById(R.id.webview);
webView.loadData(Uri.encode(html), "text/html", "utf-8");
Til at starte med troede jeg det var en bug (
http://code.google.com/p/and...=4401) indtil jeg læste dokumentationen.