Ich suche nach einer einfachen Möglichkeit, Picasso zu verwenden, um ein Notiz-Icon zu laden (welches eine URL auf einer entfernten Webseite ist). In einer früheren Version der App, an der ich arbeite, scheint dieser Code zu funktionieren:
%Vor%Aber jetzt bekomme ich jedes Mal eine TimeOutException (und ich falle auf ein Standard-Icon in meinem res-Ordner zurück). Ich muss diese AsyncTask verwenden, da Picasso (/ Netzwerk) möglicherweise nicht auf dem UIhread passiert. (Obwohl ich hier den UI-Thread für 1,5 Sekunden blockiere ..).
Ich weiß, dass Picasso mit entfernten Ansichten umgehen kann, aber ich möchte keine benutzerdefinierte Ansicht für meine Benachrichtigung verwenden. Auch konnte ich keine Möglichkeit finden, das RemoteView für die NoticificationIcon zu bekommen.
Gibt es eine Möglichkeit, das Symbol meiner Benachrichtigung einfach mit Picasso zu setzen?
Ich beantworte die Frage selbst, weil ich einen vernünftigen Weg gefunden habe, Picasso und RemoteViews zu verwenden. Getestet und mit Picasso 2.5.2 gearbeitet:
%Vor%Ich bin mir nicht sicher, warum Ihr Code nicht funktioniert, aber er kompiliert sich gut für mich, getestet auf API Level 21 und Android Studio.
Ich habe ein paar Änderungen vorgenommen, um meine Bedürfnisse zu erfüllen, z. die Zeitverzögerung wurde entfernt.
Die einzigen bemerkbaren Unterschiede sind die folgenden Ausgaben in meinem Logcat:
%Vor%Dies ist normal basierend auf den Links: dies und this
Und mein aktualisierter Code ist:
%Vor% Wenn Sie nicht warten möchten, bis Picasso das Bild vor dem Senden der Benachrichtigung abgerufen hat, besteht eine Lösung darin, die Benachrichtigung zweimal mit der gleichen ID zu senden , damit NotificationManager
die Nachricht aktualisiert bestehende Benachrichtigung beim zweiten Senden.
Verwenden Sie in der Praxis zum ersten Mal einen Platzhalter für setLargeIcon()
und das zweite Mal verwenden Sie Bitmap
, das Sie von einem Picasso Target
erhalten haben.
Zum Beispiel von Ihrem Activity
:
Da Picasso auf das Internet zugreifen muss, vergessen Sie nicht, in Ihrem Manifest die richtige Berechtigung zu setzen, damit dies funktioniert:
%Vor%Tags und Links android multithreading android-notifications picasso