2012-04-15 8 views
0

versuchen, meine erste android widget zu erhalten und lassen Sie mich Ihnen sagen, von Visual Studio Pro zu Eclipse ist keine glatte Sache! Jedenfalls laufe ich auf den obigen Fehler, der mir einige Probleme zu lösen gibt. Ive suchte nach allen möglichen Duplikaten und es scheint, dass dieser Fehler auftritt, wenn die App die IPC-Größe (dh große Bilder)android javabinder fehlgeschlagen binder transaktion

Mein kleines Widget startet einen Intentservice, um einige Informationen aus dem Web und ein Bild herunterladen. Die ursprüngliche Bildgröße des Png beträgt etwa 100k. Bevor ich jedoch das Widget aktualisiere, reduziere ich es auf ungefähr 17k. (überprüft mit Speicher Tracker Größe war 16400bytes []). und dennoch schlägt das Update fehl. Wenn ich das Bild entferne, ist das Update erfolgreich.

dies ist der Hörer in widgetprovider, die ausgeführt werden sollen:

public void onHttpLoaded(Bitmap image, String titlestring, String subtitlestring) 
    { 
     Context context = getApplicationContext();   

     if (image == null) //no data? 
     { 
      Toast.makeText(context, context.getResources().getString(R.string.null_data_toast), Toast.LENGTH_LONG); 
      return;// exit! 
     } 

     try 
     { 
      RemoteViews widgetView = new RemoteViews(this.getPackageName(), R.layout.main);    
      widgetView.setTextViewText(R.id.title, titlestring); 

      //all other comment out 

      //The problem! 
      widgetView.setImageViewBitmap(R.id.main_icon, image); 

      //Get global appwidgetmanager 
      AppWidgetManager manager = AppWidgetManager.getInstance(this); 

      //update widget 
      manager.updateAppWidget(Constants.THIS_APPWIDGET, widgetView); 
     } 
     catch (Exception e) 
     { 
      Log.d("onHttpLoaded", e.toString()); 
     } 

    } 

und die onHandleIntent von meinem Dienst, der obige Code aufgerufen wird:

protected void onHandleIntent(Intent intent) 
    { 
     resources = getApplicationContext().getResources(); 
     int iAppWidgetId;   
     try 
     { 
      iAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
     } 
     catch (Exception e) 
     { 
      Log.d("Service", "WidgetID not found"); 
     } 
     //comment out stuff... 

     //launch new httpTask 
     httpTask myhttpTask = new httpTask(tittlestring, subtitlestring, (myHttpListener) MyUpdateService.this, MyUpdateService.this); 
     //limit size of bitmap 
     myhttpTask.setSampleSize(Constants.BITMAP_SAMPLE_SIZE); //size = 4 
     myhttpTask.execute(); 

    } 

alle Tests in Emulator fertig sind. ein Detail, das wichtig sein kann ist, dass in Logcat bekomme ich 20-30 Fehler Nachrichten "!!! fehlgeschlagen Binder Transaktion !!!" irgendwelche Ideen, wie ich das vermasselt? thnks!

+0

gelöst .......... – Ray

Antwort

1

gelöst. Es war ein Speicherproblem des Emulators.