Verwenden Sie eine Asynchrone Aufgabe für eine bitmap

Habe ich eine Methode fügt hinzu, dass viele Marker auf einer Google-Karte.

Hier ist mein code:

item = new MapLocation();
URL myurl = new URL("http://www.canninginc.co.nz/CanFindLocation/yes.png"); 
Bitmap bmp = BitmapFactory.DecodeStream(myurl.OpenConnection().InputStream);
item.icon = BitmapDescriptorFactory.FromBitmap(bmp);
item.Location = new LatLng (-41.227834, 174.812857);
item.Snippet = "Snippet2";
item.Title = "Title2";
item.ShowInfoWindowOnStartup = true;
_mapLocationList.Add(item);

Bin ich immer diese Fehlermeldung:

Ausnahme vom Typ " Android.OS.NetworkOnMainThreadException' ausgelöst wurde.

Ich habe einige der Forschung getan und ich denke ich muss die Aktion auf einen anderen thread, wenn du die Bitmap.

Kann ich etwas Hilfe mit diesem code? Hat der AsyncTask Rückkehr eine Bitmap, oder wie kann ich Band die beiden zusammen?

Vielen Dank im Voraus.

BEARBEITEN

Ich bin mit Xamarin, und gebucht haben Sie den folgenden code in eine neue Klasse:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Graphics;

namespace SimpleMapDemo
{
    class MyAsyncTask extends AsyncTask<String, Void, Bitmap>
    {
        @Override
        protected Bitmap doInBackground(String... urls) {
            if (urls.length > 0) {
                URL myurl = new URL("http://www.canninginc.co.nz/CanFindLocation/yes.png"); 
                return BitmapFactory.DecodeStream(myurl.OpenConnection().InputStream);
            }

            return null;
        }
        @Override
        protected void onPostExecute(Bitmap bmp) {
            super.onPostExecute(bmp);

            if (bmp != null) {
                item = new MapLocation();
                item.icon = BitmapDescriptorFactory.FromBitmap(bmp);
                item.Location = new LatLng (-41.227834, 174.812857);
                item.Snippet = "Snippet2";
                item.Title = "Title2";
                item.ShowInfoWindowOnStartup = true;
                _mapLocationList.Add(item);
            }
        }
    }
}

Bin ich immer zu viele Fehler. Bin ich platzieren Sie diesen code in den richtigen Bereich?

  • Suche für asynchrone Aufgabe in der android-Dokumentation..
  • Es ist kein Fehler hier. Bitte zeigen Sie Ihren code in der Aktivität. Ich denke, das problem, dass man in.
  • @Override und extends sind Java-Worte. In C#müssen Sie diese ändern, z.B. override in der Erklärung und Verwendung von :. Oder alternativ, können Sie Blick auf dieses Async-Support-Übersicht im Xamarin
InformationsquelleAutor user22707 | 2014-01-11
Schreibe einen Kommentar