[Help] Activity lifecycle Android

02/09/2018 15:19 MrTheAwsomeGuy#1
Hallo,
ich brauche eure Hilfe.
Ich habe eine App, die Daten aus dem Internet laden soll.
Das soll aber erst passieren, nachdem die Activity sichtbar ist.
Angeblich soll onStart() erst ausgeführt werden, nachdem onCreate() durch ist und die Activity sichtbar ist.
In meinem Fall gibt es aber einen Blackscreen bis onStart() auch durch gelaufen ist, was dazu führt, dass ich bei schlechtem Internet sehr lange im Blackscreen bin. (Ich lade die Sachen in onStart())
Ich würde mich über Hilfe freuen :)
02/09/2018 16:04 algernong#2
Lad es doch im Hintergrund runter, also in einem anderen Thread. Dann ist die UI solange nicht eingefroren.

Hatte mir dazu mal folgendes zusammengereimt, funktioniert, aber keine Ahnung ob es dafür bessere Lösungen gibt.
PHP Code:
public class DefaultPictureService implements PictureService {

    public static final 
String TAG "DefaultPictureService";

    [
MENTION=295804]Override[/MENTION]
    public 
void downloadPicture(LocalPicture localPicturePictureDownloadListener downloadListener) {
        
Log.d(TAG"downloadPicture: " localPicture.getDownloadUrl()
                + 
", width: " localPicture.getWidth()
                + 
", height: " localPicture.getHeight());
        
createDownloadTask(localPicture.getDownloadUrl(), downloadListener).execute();
    }

    [
MENTION=295804]Override[/MENTION]
    public 
void downloadThumbnailPicture(final LocalPicture localPicture, final PictureDownloadListener downloadListener) {
        
Log.d(TAG"downloadThumbnailPicture: " localPicture.getThumbnailDownloadUrl()
                + 
", width: " localPicture.getWidth()
                + 
", height: " localPicture.getHeight());
        
createDownloadTask(localPicture.getThumbnailDownloadUrl(), downloadListener).execute();
    }

    private 
AsyncTask<VoidVoidVoidcreateDownloadTask(final String downloadUrl,
                                               final 
PictureDownloadListener downloadListener) {
        return new 
AsyncTask<VoidVoidVoid>() {
                  [
MENTION=295804]Override[/MENTION]
            protected 
Void doInBackground(Void... params) {
                try {
                    final 
Bitmap bitmap BitmapFactory.decodeStream(new URL(downloadUrl).openStream());
                    new 
Handler(Looper.getMainLooper()).post(new Runnable() {
                              [
MENTION=295804]Override[/MENTION]
                        public 
void run() {
                            
downloadListener.onDownloadFinished(bitmap);
                        }
                    });
                } catch (final 
IOException e) {
                    new 
Handler(Looper.getMainLooper()).post(new Runnable() {
                              [
MENTION=295804]Override[/MENTION]
                        public 
void run() {
                            
downloadListener.onDownloadFailed(e);
                        }
                    });
                }
                return 
null;
            }
        };
    }

02/09/2018 17:46 Serraniel#3
#moved