Сохранить изображение в песочницу по URL

Нужно загрузить изображение без использования сторонних библиотек(picasso, glide). Я попробовал сделать это вот так. так как я новичок, то всего еще не понимаю. после нажатия кнопки, прогрессдиалог появляется и тут же исчезает. причем UI тормозится на какое-то время. Студия сама об этом говорит(Skipped 541 frames! The application may be doing too much work on its main thread.) Я же использую AsyncTask, почему это влияет на UI? Подскажите методы для загрузки изображения таким образом.

protected void saveImage(Context context, Bitmap bitmap, String imageName) {
    FileOutputStream fos;
    try {
        fos = context.openFileOutput(imageName, Context.MODE_PRIVATE);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    } catch (Exception e) {
        Log.d("saveImage", "Exception 2");
        e.printStackTrace();
    }
}

private Bitmap downloadImage(String mUrl) throws IOException {
    HttpURLConnection connection = null;
    InputStream input = null;
    try {
        URL url = new URL(et_enter_URL.getText().toString());
        connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        input = connection.getInputStream();
        Bitmap bitmap = BitmapFactory.decodeStream(input);
        return bitmap;
    } catch (IOException ioex) {
        ioex.printStackTrace();
        return null;
    } finally {
        connection.disconnect();

    }

}

private class DownloadTask extends AsyncTask<String, Void, Bitmap> {

    private String TAG = "Download image";




    protected void onPreExecute() {
        super.onPreExecute();
        mProgressDialog.show();

    }

    @Override
    protected Bitmap doInBackground(String... strings) {


        try {
            return downloadImage(strings[0]);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        super.onPostExecute(result);
        mProgressDialog.dismiss();
        saveImage(getApplicationContext(), result, "myImage.png"+System.currentTimeMillis()/1000);
        Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT).show();

    }


}

Ответы (0 шт):