См. Жизненный цикл активности (в Android Developers).
[/g10]
Вызывается, когда действие сначала создается. Здесь вы должны выполнить всю свою обычную статическую настройку: создавать представления, привязывать данные к спискам и т. Д. Этот метод также предоставляет вам пакет, содержащий ранее замороженное состояние активности, если оно есть. Всегда за ним следует onStart ().
blockquote>Вызывается после того, как ваша активность была остановлена, до этого снова начнется. Всегда за ним следует onStart ()
blockquote>Вызывается, когда действие становится видимым для пользователя. За ним следует onResume (), если действие выходит на передний план или onStop (), если оно становится скрытым.
blockquote>Вызывается, когда действие начнет взаимодействовать с пользователем. На данный момент ваша деятельность находится в верхней части стека действий, при этом пользовательский ввод идет.
blockquote>Вызывается как часть жизненного цикла активности, когда действие выходя на задний план, но пока не убит. Совместим с onResume (). Когда действие B запускается перед активностью A, этот обратный вызов будет вызываться на A. B не будет создан до тех пор, пока не будет возвращен A onPause (), поэтому обязательно не делайте ничего длинного здесь.
blockquote>Вызывается, когда вы больше не видите пользователя. После этого вы будете получать либо onRestart (), onDestroy (), либо ничего, в зависимости от более поздней активности пользователя.
Обратите внимание, что этот метод никогда не может быть вызван в ситуациях с низкой памятью, когда в системе недостаточно памяти чтобы продолжить работу вашего процесса после вызова метода onPause ().
blockquote>Последний вызов вы получаете до того, как ваша деятельность будет уничтожена. Это может произойти либо из-за завершения операции (кто-то по имени заканчивает (), либо потому, что система временно уничтожает этот экземпляр действия для экономии места. Вы можете различать> эти два сценария с методом 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"); } }
попробуйте 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();
}
}
, но, пожалуйста, не забудьте на разрешение чтения и записи на внешнее хранилище