Как сжимать изображение, загруженное с помощью Glide

См. Жизненный цикл активности (в Android Developers).

Enter image description here [/g10]

onCreate () :

Вызывается, когда действие сначала создается. Здесь вы должны выполнить всю свою обычную статическую настройку: создавать представления, привязывать данные к спискам и т. Д. Этот метод также предоставляет вам пакет, содержащий ранее замороженное состояние активности, если оно есть. Всегда за ним следует onStart ().

blockquote>

onRestart () :

Вызывается после того, как ваша активность была остановлена, до этого снова начнется. Всегда за ним следует onStart ()

blockquote>

onStart () :

Вызывается, когда действие становится видимым для пользователя. За ним следует onResume (), если действие выходит на передний план или onStop (), если оно становится скрытым.

blockquote>

onResume () :

Вызывается, когда действие начнет взаимодействовать с пользователем. На данный момент ваша деятельность находится в верхней части стека действий, при этом пользовательский ввод идет.

blockquote>

onPause () :

Вызывается как часть жизненного цикла активности, когда действие выходя на задний план, но пока не убит. Совместим с onResume (). Когда действие B запускается перед активностью A, этот обратный вызов будет вызываться на A. B не будет создан до тех пор, пока не будет возвращен A onPause (), поэтому обязательно не делайте ничего длинного здесь.

blockquote>

onStop () :

Вызывается, когда вы больше не видите пользователя. После этого вы будете получать либо onRestart (), onDestroy (), либо ничего, в зависимости от более поздней активности пользователя.

Обратите внимание, что этот метод никогда не может быть вызван в ситуациях с низкой памятью, когда в системе недостаточно памяти чтобы продолжить работу вашего процесса после вызова метода onPause ().

blockquote>

onDestroy () :

Последний вызов вы получаете до того, как ваша деятельность будет уничтожена. Это может произойти либо из-за завершения операции (кто-то по имени заканчивает (), либо потому, что система временно уничтожает этот экземпляр действия для экономии места. Вы можете различать> эти два сценария с методом isFinishing ().

blockquote>

Когда активность в первый раз загружается, события вызываются, как показано ниже:

onCreate()
onStart()
onResume()

Когда вы нажимаете кнопку «Телефон», активность переходит в фоновый режим, а следующие события вызванный:

onPause()
onStop()

Выйдите из телефонного набора, и будут вызываться следующие события:

onRestart()
onStart()
onResume()

Когда вы нажимаете кнопку «Назад» или пытаетесь завершить () активность событий называются ниже:

onPause()
onStop()
onDestroy()

Состояния активности

ОС Android использует очередь приоритетов, чтобы помочь в управлении действиями, выполняемыми на устройстве На основе состояния, в котором находится конкретная активность Android, ему будет присвоен определенный приоритет в ОС. Эта система приоритетов помогает Android идентифицировать действия, которые больше не используются, al с помощью ОС восстанавливать память и ресурсы. Следующая диаграмма иллюстрирует состояния, через которые может проходить активность за время жизни:

Эти состояния можно разбить на три основные группы следующим образом:

Активен или работает - действия считаются активными или выполняются, если они находятся на переднем плане, также называются вершинами стека действий. Это считается наивысшим приоритетом в стеке активности Android, и как таковое будет уничтожаться только ОС в экстремальных ситуациях, например, если активность пытается использовать больше памяти, чем доступно на устройстве, так как это может привести к тому, что пользовательский интерфейс будет перестают отвечать.

Приостановлено. Когда устройство переходит в режим сна или активность все еще видима, но частично скрыта в результате новой, не полной или прозрачной активности, активность считается приостановленной. Приостановленные действия все еще живы, то есть они поддерживают всю информацию о состоянии и членах и остаются прикрепленными к оконному менеджеру. Это считается второстепенным приоритетом в стеке активности Android и, как таковой, будет уничтожаться только ОС, если убить это действие будет удовлетворять требованиям к ресурсам, необходимым для поддержания стабильной и оперативной активности Active / Running.

Остановлен - действия, полностью закрытые другим действием, считаются остановленными или находящимися в фоновом режиме. Остановленные действия по-прежнему пытаются сохранить информацию о своем штате и членстве как можно дольше, но прекращенные действия считаются наименьшим приоритетом для трех государств, и, таким образом, ОС сначала уничтожит действия в этом состоянии, чтобы удовлетворить потребности в ресурсах деятельности более высокого приоритета.

* Пример активности для понимания жизненного цикла **

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
    String tag = "LifeCycleEvents";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       Log.d(tag, "In the onCreate() event");
    }
    public void onStart()
    {
       super.onStart();
       Log.d(tag, "In the onStart() event");
    }
    public void onRestart()
    {
       super.onRestart();
       Log.d(tag, "In the onRestart() event");
    }
    public void onResume()
    {
       super.onResume();
       Log.d(tag, "In the onResume() event");
    }
    public void onPause()
    {
       super.onPause();
       Log.d(tag, "In the onPause() event");
    }
    public void onStop()
    {
       super.onStop();
       Log.d(tag, "In the onStop() event");
    }
    public void onDestroy()
    {
       super.onDestroy();
       Log.d(tag, "In the onDestroy() event");
    }
}

1
задан Mohammad Sommakia 13 July 2018 в 07:58
поделиться

1 ответ

попробуйте this

, затем напишите этот код, чтобы получить рисованное растровое изображение, затем преобразуйте растровое изображение в файл

public void doTheJob(){
Bitmap bitmap= BitmapFactory.decodeResource(context.getResources(),
                                           R.drawable.icon_resource);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);

//you can create a new file name "test.jpg" in sdcard folder.
File f = new File(Environment.getExternalStorageDirectory()
                        + File.separator + "test.jpg");
f.createNewFile();
//write the bytes in file
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());


new Compressor(this).compressToFileAsFlowable(f)
                       .subscribeOn(Schedulers.io())
                       .observeOn(AndroidSchedulers.mainThread())
                       .subscribe(file -> getTheBitmapOfTheFile(file), throwable -> throwable.printStackTrace());
// remember close de FileOutput
fo.close();
}

public void getTheBitmapOfTheFile(File file){
        Bitmap bitmap = null;
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        try {
            bitmap = BitmapFactory.decodeStream(new FileInputStream(file), null, options);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
}

, но, пожалуйста, не забудьте на разрешение чтения и записи на внешнее хранилище

1
ответ дан Abdulmalek Dery 17 August 2018 в 13:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: