Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
/
Лабораторна робота №2
з предмету:
«Мережні операційні системи»
на тему:
«Управління обчисленнями в ОС Android»
Мета роботи: Оволодіти навичками роботи з Android Activity та Activity stack.
Методи активності:
При переході активності від одного стану до іншого, вона одержує повідомлення через захищені методи:
onCreate ();
onStart ();
onRestart ();
onResume ();
onPause ();
onStop ();
onDestroy ()
З перерахованих методів у вашому класі обов'язково повинен бути метод onCreate (), яка задає початкову установку параметрів при ініціалізації активності. Другим за популярністю є метод onPause (), використовуваний для збереження налаштувань користувача активності і підготуватися до припинення взаємодії з користувачем.
/
Рис.1 Схема життєвого циклу Android Activity
Сім перерахованих методів визначають весь життєвий цикл активності.
Є три вкладених циклу, які ви можете відслідковувати в класі активності:
повний час життя (entire lifetime) - час з моменту першого виклику методу onCreate () до виклику onDestroy (). Активність робить всю початкову установку свого глобального стану в методі onCreate () і звільняє всі ресурси, які залишилися в onDestroy (). Наприклад, якщо активність породжує додатковий потік, що виконується в фоновому режимі, можна створити цей потік в методі onCreate () і потім зупинити потік в методі onDestroy ();
видимий час життя (visible lifetime) - час між викликом методу onStart () і викликом onStop (). В цей час користувач може бачити вікно активності на екрані, хоча вікно може не бути на передньому плані і може не взаємодіяти з користувачем. Між цими двома методами ви можете підтримувати в коді ресурси, які необхідні, щоб відображати активність користувачеві;
активний час життя (foreground lifetime) - час між викликами onResume () і onPause (). В цей час вікно активності знаходиться на передньому плані і взаємодіє з користувачем. Активність в процесі роботи додатка може часто переходити між станами active і paused, тому код в цих двох методах повинен бути або невеликим за обсягом (щоб не сповільнювати роботу програми під час виконання), або породжувати додаткові потоки, якщо потрібне виконання завдань, які займають тривалий час.
Лістинг тестової програми:
MainActivity.java
package ua.mos.lab2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
final String TAG = "States";
Button btnActTwo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnActTwo = (Button) findViewById(R.id.btnActTwo);
btnActTwo.setOnClickListener(this);
Log.d(TAG, "MainActivity: onCreate()");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "MainActivity: onRestart()");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "MainActivity: onStart()");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "MainActivity: onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "MainActivity: onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "MainActivity: onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "MainActivity: onDestroy()");
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, ActivityTwo.class);
startActivity(intent);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/btnActTwo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Перехід в Activity 2" >
</Button>
</LinearLayout>
ActivityTwo.java
package ua.mos.lab2;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class ActivityTwo extends Activity {
final String TAG = "States";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.two);
Log.d(TAG, "ActivityTwo: onCreate()");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "ActivityTwo: onRestart()");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "ActivityTwo: onStart()");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "ActivityTwo: onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "ActivityTwo: onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "ActivityTwo: onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "ActivityTwo: onDestroy()");
}
}
two.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Вітаємо на Activity 2!"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
Результати виконання програми:
/ /
Висновок: На цій лабораторні роботі я оволодів навичками роботи з Android Activity та Activity stack.