Probleme mit Excel auf Android

  • Antworten:8
Franz Josef
  • Forum-Beiträge: 21

22.01.2013, 19:42:03 via Website

Hallo Leute,

ich schreibe zur Zeit eine App die sich per Bluetooth mit einem Gerät verbindet, welches mir Daten schickt.
Diese Daten nehme ich auf und schreibe sie in eine Excel Datei.
Für Excel benutze ich die Apache POI Library und komme gut damit zurecht.

Mein Problem:

Wenn ich die App auf dem Samsung Galaxy S2 laufen lasse, werden mir bei jedem Empfangen der Daten ein Ladefenster angezeigt bis der Schreibevorgang abgeschlossen ist. Dort funktioniert es also ohne Probleme. Wenn ich das ganze auf ein Galaxy Tab 2 7 Zoll, Android 4.0.4 mache, werden beim ersten Daten-Empfangen die Daten ohne Probleme in die Excel Datei geschrieben. Wenn nun aber der zweite Datensatz kommt, hängt sich die App nach 15 Sekunden auf und sagt " 'Name-der-App wurde' angehalten" und wird geschlossen...

Hier mal die wesentlichen CodeSchnipsel:

Main Activity

1public void chooseButton(View view) throws IOException {
2 switch (view.getId()) {
3 case R.id.sf_connect:
4 if(Mac_Adresse != null){
5 int v = tool.connect(Mac_Adresse);
6 switch (v){
7 case 1:
8 Toast.makeText(this, "Mit Instrument verbunden!", Toast.LENGTH_SHORT).show();
9 new Listening(handler,tool,tool.Socket, dialog).execute(); // hier starte ich den AsyncTask !!!
10 break;
11 case 2:
12 Toast.makeText(this, "Instrument ist bereits verbunden!", Toast.LENGTH_SHORT).show();
13 break;
14 case 0:
15 Toast.makeText(this, "Verbindung fehlgeschlagen!", Toast.LENGTH_SHORT).show();
16 break;
17 }
18 }else{
19 Toast.makeText(this, "Kein Instrument ausgewählt", Toast.LENGTH_SHORT).show();
20 }
21 break;
22 }
23 }

Wenn die Verbindung also steht, wird der AsyncTask für das "port-listening" gestartet.

Hier die Klasse Listening:

1@Override
2 protected String doInBackground(String... arg0) {
3 msg = "-1";
4 tmpinput = null;
5
6 try {
7 tmpinput = socket.getInputStream();
8 } catch (Exception e) {
9 }
10
11 input = tmpinput;
12 reader = new InputStreamReader(input);
13 br = new BufferedReader(reader);
14
15 handler.post(new Runnable() {
16 public void run() {
17 Main.tx_listen.setText("warte auf Messdaten...");
18 }
19 });
20
21 while (true) {
22
23 try {
24 msg = br.readLine(); //Buffer auslesen
25
26 split = msg.split(","); // Datenstring aufsplitten
27 name = split[0];
28
29 publishProgress("Punkt "+name+" wird in Excel Datei geschrieben..."); //ProgressDialog starten
30
31 rechts = Double.parseDouble(split[1]);
32 hoch = Double.parseDouble(split[2]);
33 hoehe = Double.parseDouble(split[3]);
34
35 excel.fillExcel(name, rechts, hoch, hoehe); // HIER nun das beschreiben der Excel Datei
36 dialog.dismiss();
37
38 } catch (IOException e) {
39 handler.post(new Runnable() {
40 public void run() {
41 Main.tx_listen.setText("warte auf Verbindung...");
42 }
43 });
44 break;
45 }
46 }// while
47 return null;
48 }
49 @Override
50 protected void onProgressUpdate(String... values) {
51
52 dialog.setTitle("schreibe Daten in Excel...");
53 dialog.setMessage(values[0]);
54 dialog.setCancelable(false);
55 dialog.show();
56
57 super.onProgressUpdate(values);
58 }


Soweit sogut, hier nun die Klasse Excel: (ACHTUNG Klasse Excel ist kein Thread und kein AsyncTask)

1public void fillExcel(String name,double rechts,double hoch,double hoehe) {
2 try {
3 InputStream in = new FileInputStream("/sdcard/Download/myXLS.xls"); // Datei auswählen
4 HSSFWorkbook wb = new HSSFWorkbook(in); // Workbook erstellen
5 in.close();
6 HSSFSheet sheet = wb.getSheetAt(0); // Tabelle 1 auswaehlen
7
8 for(int j=1;j<100;j++){ // durch die Zeilen iterieren bis freie Zeile da ist
9 row = sheet.getRow(j);
10 cellname = row.getCell(0);
11 cellrechts = row.getCell(1);
12 cellhoch = row.getCell(2);
13 cellhoehe = row.getCell(3);
14 if(cellrechts.getCellType() == 3){ // wenn die Zelle leer ist, dann iterieren stoppen
15 break;
16 }
17 }
18 cellname.setCellValue(name);
19 cellrechts.setCellValue(rechts);
20 cellhoch.setCellValue(hoch);
21 cellhoehe.setCellValue(hoehe);
22 FileOutputStream out = new FileOutputStream("/sdcard/Download/myXLS.xls"); // OutputFile definieren
23 wb.write(out); // Daten ins Workbook schreiben
24 out.close();
25 } catch (Exception e) {
26
27 }
28 }

Also meine Idee zu dem Problem ist mir gerade während des schreibens eingefallen.
Kann es sein, dass die Klasse Excel selbst ein Thread sein sollte, damit es da zu keinen Problemen kommt?


Ich wäre euch so Dankbar, wenn irgendwelche Tipps oder Ideen kommt würden.


Vielen vielen Dank schonmal im voraus
hoffe dass sich jemand mal den Code anguckt =)

Lieben Gruß

— geändert am 22.01.2013, 19:45:45

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

22.01.2013, 20:09:21 via Website

Es wäre wie bei allen Problemen dieser Art extrem hilfreich wenn Du den dazugehörigen LogCat Auszug mit angeben könntest. Dort steht auf die Zeile genau wo in Deinem Code das Problem auftritt. Ansonsten ist alles andere meist Glaskugel-Leserei ...

lg Voss

Antworten
Franz Josef
  • Forum-Beiträge: 21

22.01.2013, 20:14:49 via Website

Hallo

ich habe zur Zeit leider das Gerät nicht zur Hand und kann nichts loggen, aber meine mich daran zu erinnern, dass was mit Unexpected Thread Exception geworfen wurden...
Kann es sein, dass der AsyncTask nicht für Vorgänge die länger als 15 Sekunden dauern, gemacht ist?
Oder das halt die Excel Klasse kein Thread ist, wodurch die App denkt, dass es eine App ist, die nicht mehr reagiert?

Gruß

Antworten
Franz Josef
  • Forum-Beiträge: 21

23.01.2013, 09:37:32 via Website

Hallo Jörg Voss,

hier jetzt mal der LogCat Bericht.

Beim ersten Datensatz bekomme ich diesen Log:


[code]01-23 09:13:48.391: I/System.out(4011): debugger has settled (1458)
01-23 09:13:48.508: D/dalvikvm(4011): GC_FOR_ALLOC freed 48K, 4% free 6739K/6979K, paused 17ms
01-23 09:13:48.516: I/dalvikvm-heap(4011): Grow heap (frag case) to 8.116MB for 1536016-byte allocation
01-23 09:13:48.540: D/dalvikvm(4011): GC_FOR_ALLOC freed <1K, 4% free 8238K/8519K, paused 15ms
01-23 09:13:48.587: D/dalvikvm(4011): GC_CONCURRENT freed 2K, 4% free 8243K/8519K, paused 2ms+4ms
01-23 09:13:48.766: D/libEGL(4011): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
01-23 09:13:48.774: D/libEGL(4011): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
01-23 09:13:48.774: D/libEGL(4011): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
01-23 09:13:48.883: D/OpenGLRenderer(4011): Enabling debug mode 0
01-23 09:13:50.063: D/OpenGLRenderer(4011): Flushing caches (mode 0)
01-23 09:13:50.868: D/OpenGLRenderer(4011): Flushing caches (mode 0)
01-23 09:13:53.352: D/BluetoothUtils(4011): isSocketAllowedBySecurityPolicy start : device null
01-23 09:14:02.422: D/dalvikvm(4011): GC_CONCURRENT freed 116K, 3% free 8602K/8839K, paused 3ms+9ms
01-23 09:14:02.821: D/dalvikvm(4011): GC_CONCURRENT freed 136K, 3% free 9051K/9287K, paused 4ms+2ms
01-23 09:14:03.165: D/dalvikvm(4011): GC_CONCURRENT freed 14K, 2% free 9765K/9927K, paused 2ms+3ms
01-23 09:14:03.587: D/dalvikvm(4011): GC_CONCURRENT freed 13K, 2% free 10682K/10823K, paused 2ms+3ms
01-23 09:14:06.126: I/dalvikvm(4011): Could not find method org.apache.commons.codec.digest.DigestUtils.md5, referenced from method org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture
01-23 09:14:06.126: W/dalvikvm(4011): VFY: unable to resolve static method 8115: Lorg/apache/commons/codec/digest/DigestUtils;.md5 ([B)[B
01-23 09:14:06.133: D/dalvikvm(4011): VFY: replacing opcode 0x71 at 0x0004
01-23 09:14:07.110: D/dalvikvm(4011): GC_CONCURRENT freed 817K, 8% free 11142K/12039K, paused 2ms+3ms
01-23 09:14:15.657: D/dalvikvm(4011): GC_CONCURRENT freed 344K, 4% free 12206K/12679K, paused 2ms+4ms
01-23 09:14:31.188: D/dalvikvm(4011): GC_CONCURRENT freed 612K, 6% free 13343K/14087K, paused 3ms+3ms
01-23 09:14:44.282: D/dalvikvm(4011): GC_CONCURRENT freed 492K, 5% free 14812K/15431K, paused 2ms+4ms
01-23 09:14:56.516: D/dalvikvm(4011): GC_CONCURRENT freed 506K, 4% free 16270K/16903K, paused 3ms+5ms
01-23 09:15:19.383: D/dalvikvm(4011): GC_CONCURRENT freed 737K, 5% free 17509K/18375K, paused 5ms+6ms
01-23 09:15:37.626: D/dalvikvm(4011): GC_CONCURRENT freed 913K, 6% free 18627K/19655K, paused 2ms+3ms
01-23 09:15:51.907: D/dalvikvm(4011): GC_CONCURRENT freed 628K, 4% free 20014K/20743K, paused 2ms+3ms
01-23 09:15:57.532: D/dalvikvm(4011): GC_CONCURRENT freed 538K, 3% free 21519K/22151K, paused 2ms+3ms
01-23 09:16:00.852: D/dalvikvm(4011): GC_CONCURRENT freed 684K, 4% free 22904K/23687K, paused 2ms+4ms
01-23 09:16:05.079: D/dalvikvm(4011): GC_CONCURRENT freed 164K, 2% free 24709K/24967K, paused 2ms+3ms
01-23 09:16:30.587: D/dalvikvm(4011): GC_CONCURRENT freed 31K, 1% free 26666K/26823K, paused 2ms+3ms
01-23 09:16:46.055: D/dalvikvm(4011): GC_CONCURRENT freed 812K, 4% free 27853K/28743K, paused 2ms+4ms
01-23 09:16:55.626: D/dalvikvm(4011): GC_CONCURRENT freed 253K, 2% free 29610K/30023K, paused 3ms+3ms
01-23 09:17:06.188: D/dalvikvm(4011): GC_CONCURRENT freed 415K, 2% free 31162K/31687K, paused 2ms+4ms
01-23 09:17:14.766: D/dalvikvm(4011): GC_CONCURRENT freed 494K, 2% free 32677K/33287K, paused 3ms+4ms
01-23 09:17:21.962: D/dalvikvm(4011): GC_CONCURRENT freed 422K, 2% free 34311K/34823K, paused 2ms+7ms
01-23 09:17:38.008: D/dalvikvm(4011): GC_CONCURRENT freed 41K, 1% free 36285K/36423K, paused 2ms+4ms
01-23 09:17:55.110: D/dalvikvm(4011): GC_CONCURRENT freed 231K, 1% free 38074K/38407K, paused 2ms+5ms
01-23 09:18:03.633: D/dalvikvm(4011): GC_CONCURRENT freed 312K, 1% free 39805K/40199K, paused 2ms+4ms
01-23 09:18:20.493: D/dalvikvm(4011): GC_CONCURRENT freed 66K, 1% free 41713K/41863K, paused 2ms+4ms
01-23 09:19:56.415: D/dalvikvm(4011): GC_CONCURRENT freed 2640K, 7% free 41029K/43783K, paused 2ms+4ms
01-23 09:20:16.391: D/dalvikvm(4011): GC_CONCURRENT freed 1669K, 6% free 41343K/43783K, paused 2ms+5ms
01-23 09:20:58.501: D/dalvikvm(4011): GC_FOR_ALLOC freed 729K, 3% free 42494K/43783K, paused 378ms
01-23 09:20:58.501: I/dalvikvm-heap(4011): Grow heap (frag case) to 43.752MB for 2291532-byte allocation
01-23 09:20:58.938: D/dalvikvm(4011): GC_CONCURRENT freed 0K, 3% free 44732K/46023K, paused 1ms+3ms
01-23 09:21:26.883: D/dalvikvm(4011): GC_CONCURRENT freed 3659K, 9% free 43023K/46855K, paused 3ms+3ms
01-23 09:21:28.883: D/dalvikvm(4011): GC_CONCURRENT freed 41K, 4% free 45030K/46855K, paused 2ms+4ms
01-23 09:21:29.329: E/dalvikvm(4011): Could not find class 'java.rmi.UnexpectedException', referenced from method org.apache.poi.hpsf.PropertySetFactory.create
01-23 09:21:29.329: W/dalvikvm(4011): VFY: unable to resolve new-instance 607 (Ljava/rmi/UnexpectedException;) in Lorg/apache/poi/hpsf/PropertySetFactory;
01-23 09:21:29.329: D/dalvikvm(4011): VFY: replacing opcode 0x22 at 0x0020
01-23 09:21:29.329: D/dalvikvm(4011): DexOpt: unable to opt direct call 0x0eaf at 0x26 in Lorg/apache/poi/hpsf/PropertySetFactory;.create
[/code]

und hier der Log wenn der zweite Datensatz kommt. Er hängt quasi einfach da für 15 Minuten und mehr. Habe es nach 15 Minuten abgebrochen


101-23 09:20:58.501: I/dalvikvm-heap(4011): Grow heap (frag case) to 43.752MB for 2291532-byte allocation
201-23 09:20:58.938: D/dalvikvm(4011): GC_CONCURRENT freed 0K, 3% free 44732K/46023K, paused 1ms+3ms
301-23 09:21:26.883: D/dalvikvm(4011): GC_CONCURRENT freed 3659K, 9% free 43023K/46855K, paused 3ms+3ms
401-23 09:21:28.883: D/dalvikvm(4011): GC_CONCURRENT freed 41K, 4% free 45030K/46855K, paused 2ms+4ms
501-23 09:21:29.329: E/dalvikvm(4011): Could not find class 'java.rmi.UnexpectedException', referenced from method org.apache.poi.hpsf.PropertySetFactory.create
601-23 09:21:29.329: W/dalvikvm(4011): VFY: unable to resolve new-instance 607 (Ljava/rmi/UnexpectedException;) in Lorg/apache/poi/hpsf/PropertySetFactory;
701-23 09:21:29.329: D/dalvikvm(4011): VFY: replacing opcode 0x22 at 0x0020
801-23 09:21:29.329: D/dalvikvm(4011): DexOpt: unable to opt direct call 0x0eaf at 0x26 in Lorg/apache/poi/hpsf/PropertySetFactory;.create
901-23 09:22:00.032: D/OpenGLRenderer(4011): Flushing caches (mode 1)
1001-23 09:22:00.149: D/OpenGLRenderer(4011): Flushing caches (mode 0)
1101-23 09:22:25.352: D/dalvikvm(4011): threadid=14: still suspended after undo (sc=1 dc=1)
1201-23 09:22:25.563: D/dalvikvm(4011): threadid=14: still suspended after undo (sc=1 dc=1)
1301-23 09:22:26.376: D/dalvikvm(4011): threadid=14: still suspended after undo (sc=1 dc=1)
1401-23 09:22:26.641: D/dalvikvm(4011): threadid=14: still suspended after undo (sc=1 dc=1)
1501-23 09:22:26.797: D/dalvikvm(4011): threadid=14: still suspended after undo (sc=1 dc=1)
1601-23 09:22:26.977: D/dalvikvm(4011): threadid=14: still suspended after undo (sc=1 dc=1)


hoffe dass dir das was sagt =). Bin noch nicht soo lange in der Android Welt =)


Lieben Gruß

— geändert am 23.01.2013, 09:38:30

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

23.01.2013, 20:18:42 via Website

Da scheint es sich wohl um ein Problem in der POI Lib zu handeln ...

Ich würde empfehlen mal nach folgenden Fehlermeldung zu googlen ...



01-23 09:21:29.329: E/dalvikvm(4011): Could not find class 'java.rmi.UnexpectedException', referenced from method org.apache.poi.hpsf.PropertySetFactory.create
601-23 09:21:29.329: W/dalvikvm(4011): VFY: unable to resolve new-instance 607 (Ljava/rmi/UnexpectedException;) in Lorg/apache/poi/hpsf/PropertySetFactory;

lg Voss

Antworten
Franz Josef
  • Forum-Beiträge: 21

24.01.2013, 17:51:08 via Website

Hm also ich bin jetzt auf dem stand, dass die Klasse PropertySetFactory von der POI lib eine Exception aufrufen will, die in java.rmi.* ist.
Android hat aber in den google API's (Android.Jar) keine java.rmi ...
Kann man dir als Jar einfach nachträchlich dazufügen?

Antworten
Franz Josef
  • Forum-Beiträge: 21

24.01.2013, 18:38:36 via Website

Okay, wenn ich das mache habe ich die java.rmi.exception weg aber sehe nun das eigentliche Problem.
Hier mal der neue Log vom zweiten Datensatz:
Vielleicht kann mir da jemand helfen....

101-24 18:27:51.480: D/dalvikvm(15237): GC_FOR_ALLOC freed 0K, 1% free 65397K/65543K, paused 557ms
201-24 18:27:51.480: I/dalvikvm-heap(15237): Forcing collection of SoftReferences for 260-byte allocation
301-24 18:27:52.043: I/dalvikvm-heap(15237): Clamp target GC heap from 65.936MB to 64.000MB
401-24 18:27:52.050: D/dalvikvm(15237): GC_BEFORE_OOM freed 0K, 1% free 65397K/65543K, paused 567ms
501-24 18:27:52.050: E/dalvikvm-heap(15237): Out of memory on a 260-byte allocation.
601-24 18:27:52.050: I/dalvikvm(15237): "AsyncTask #2" prio=5 tid=14 RUNNABLE
701-24 18:27:52.050: I/dalvikvm(15237): | group="main" sCount=0 dsCount=0 obj=0x43831d60 self=0x9f6f10
801-24 18:27:52.050: I/dalvikvm(15237): | sysTid=15460 nice=10 sched=0/0 cgrp=bg_non_interactive handle=10186448
901-24 18:27:52.050: I/dalvikvm(15237): | schedstat=( 146887573731 7492461799 410764 ) utm=13855 stm=832 core=0
1001-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:~92)
1101-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFSheet.createRowFromRecord(HSSFSheet.java:250)
1201-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:166)
1301-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:120)
1401-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:292)
1501-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:243)
1601-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:187)
1701-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:322)
1801-24 18:27:52.050: I/dalvikvm(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:303)
1901-24 18:27:52.050: I/dalvikvm(15237): at com.michaeldepping.tools.eu.Excel.doInBackground(Excel.java:47)
2001-24 18:27:52.050: I/dalvikvm(15237): at com.michaeldepping.tools.eu.Excel.doInBackground(Excel.java:1)
2101-24 18:27:52.050: I/dalvikvm(15237): at android.os.AsyncTask$2.call(AsyncTask.java:264)
2201-24 18:27:52.050: I/dalvikvm(15237): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
2301-24 18:27:52.050: I/dalvikvm(15237): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
2401-24 18:27:52.050: I/dalvikvm(15237): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
2501-24 18:27:52.050: I/dalvikvm(15237): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
2601-24 18:27:52.050: I/dalvikvm(15237): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
2701-24 18:27:52.050: I/dalvikvm(15237): at java.lang.Thread.run(Thread.java:856)
2801-24 18:27:52.824: D/dalvikvm(15237): threadid=14: still suspended after undo (sc=1 dc=1)
2901-24 18:27:52.832: I/dalvikvm-heap(15237): Clamp target GC heap from 65.937MB to 64.000MB
3001-24 18:27:52.832: D/dalvikvm(15237): GC_CONCURRENT freed <1K, 1% free 65399K/65543K, paused 2ms+5ms
3101-24 18:28:29.730: W/dalvikvm(15237): threadid=14: thread exiting with uncaught exception (group=0x40bd21f8)
3201-24 18:28:38.746: D/dalvikvm(15237): GC_CONCURRENT freed 2547K, 5% free 62853K/65543K, paused 5ms+4ms
3301-24 18:28:38.918: E/AndroidRuntime(15237): FATAL EXCEPTION: AsyncTask #2
3401-24 18:28:38.918: E/AndroidRuntime(15237): java.lang.RuntimeException: An error occured while executing doInBackground()
3501-24 18:28:38.918: E/AndroidRuntime(15237): at android.os.AsyncTask$3.done(AsyncTask.java:278)
3601-24 18:28:38.918: E/AndroidRuntime(15237): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
3701-24 18:28:38.918: E/AndroidRuntime(15237): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
3801-24 18:28:38.918: E/AndroidRuntime(15237): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
3901-24 18:28:38.918: E/AndroidRuntime(15237): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
4001-24 18:28:38.918: E/AndroidRuntime(15237): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
4101-24 18:28:38.918: E/AndroidRuntime(15237): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
4201-24 18:28:38.918: E/AndroidRuntime(15237): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
4301-24 18:28:38.918: E/AndroidRuntime(15237): at java.lang.Thread.run(Thread.java:856)
4401-24 18:28:38.918: E/AndroidRuntime(15237): Caused by: java.lang.OutOfMemoryError
4501-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:92)
4601-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFSheet.createRowFromRecord(HSSFSheet.java:250)
4701-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:166)
4801-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:120)
4901-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:292)
5001-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:243)
5101-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:187)
5201-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:322)
5301-24 18:28:38.918: E/AndroidRuntime(15237): at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:303)
5401-24 18:28:38.918: E/AndroidRuntime(15237): at com.michaeldepping.tools.eu.Excel.doInBackground(Excel.java:47)
5501-24 18:28:38.918: E/AndroidRuntime(15237): at com.michaeldepping.tools.eu.Excel.doInBackground(Excel.java:1)
5601-24 18:28:38.918: E/AndroidRuntime(15237): at android.os.AsyncTask$2.call(AsyncTask.java:264)
5701-24 18:28:38.918: E/AndroidRuntime(15237): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
5801-24 18:28:38.918: E/AndroidRuntime(15237): ... 5 more
5901-24 18:28:45.238: D/OpenGLRenderer(15237): Flushing caches (mode 0)
6001-24 18:28:45.316: D/OpenGLRenderer(15237): Flushing caches (mode 0)
6101-24 18:28:45.965: D/OpenGLRenderer(15237): Flushing caches (mode 1)

man beachte die Zeile 01-24 18:27:52.050: E/dalvikvm-heap(15237): Out of memory on a 260-byte allocation.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

24.01.2013, 20:11:04 via Website

Ja das ist relativ klar .. du läufst gegen die 65 Mbyte Heapgrenze .. das ist ein Hardlimit unter Android!

Du musst mal tracen was da so riesengroß wird. Irgendwie laufen da auch zwei Async tasks im Background wie es den Anschein hat. Überdenke vielleicht einfach mal den Workflow Deiner Applikation und versuche etwas Ressourcenschonender zu arbeiten. Also aktiv das was nicht mehr benötigt wird freizugeben um dem Garbagecollector die Arbeit leichter zu machen.

Vielleicht eine andere Strategie um die eingelesenen Daten in ein Excel umzuwandeln .. so irgendwie nicht einfach zu beurteilen.

Hier noch ein paar Infos dazu: http://stackoverflow.com/questions/5350465/android-heap-size-on-different-phones-and-os-versions

— geändert am 24.01.2013, 20:15:53

lg Voss

Antworten