اطلاعیه

Collapse
No announcement yet.

آموزش اندروید و چرخه ی حیاط activity

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    آموزش اندروید و چرخه ی حیاط activity

    آموزش اندروید و چرخه ی حیاط activity



    ایجاد پروژه

    پروژه ی جدیدی به نام com.vogella.android.lifecycle.activity ایجاد کنید.

    کلاس زیر را ایجاد کرده تا به وسیله ی آن رخدادهای چرخه ی حیات (life-cycle events) را از روش اخطارها دریافت کنید.
    کد:
    ‎‎package com.vogella.android.lifecycle.activity;‎
        ‎ import android.app.Activity;‎
        import android.app.Notification;‎
        import android.app.NotificationManager;‎
        import android.os.Bundle;‎
        ‎ ‎
    public class TracerActivity extends Activity {‎
        ‎ ‎
        ‎ @Override
        ‎ protected void onCreate(Bundle savedInstanceState) {‎
            ‎  super.onCreate(savedInstanceState);‎
            ‎  notify("onCreate");‎
            ‎ }‎
            ‎ ‎
            ‎ @Override
        ‎ protected void onPause() {‎
            ‎  super.onPause();‎
            ‎  notify("onPause");‎
            ‎ }‎
            ‎ ‎
            ‎ @Override
        ‎ protected void onResume() {‎
            ‎  super.onResume();‎
            ‎  notify("onResume");‎
            ‎ }‎
            ‎ ‎
            ‎ @Override
        ‎ protected void onStop() {‎
            ‎  super.onStop();‎
            ‎  notify("onStop");‎
            ‎ }‎
            ‎ ‎
            ‎ @Override
        ‎ protected void onDestroy() {‎
            ‎  super.onDestroy();‎
            ‎  notify("onDestroy");‎
            ‎ }‎
            ‎ ‎
            ‎ @Override
        ‎ protected void onRestoreInstanceState(Bundle savedInstanceState) {‎
            ‎  super.onRestoreInstanceState(savedInstanceState);‎
            ‎  notify("onRestoreInstanceState");‎
            ‎ }‎
            ‎ ‎
            ‎ @Override
        ‎ protected void onSaveInstanceState(Bundle outState) {‎
            ‎  super.onSaveInstanceState(outState);‎
            ‎  notify("onSaveInstanceState");‎
            ‎ }‎
            ‎ ‎
            ‎ private void notify(String methodName) {‎
            ‎  String name = this.getClass().getName();‎
            ‎  String[] strings = name.split("\\.");‎
            ‎  Notification noti = new Notification.Builder(this)‎
            ‎  .setContentTitle(methodName + " " + strings[strings.length - ‎‎1]).setAutoCancel(true)‎
            ‎  .setSmallIcon(R.drawable.ic_launcher)‎
            ‎  .setContentText(name).build();‎
            ‎  NotificationManager notificationManager = ‎
            ‎    (NotificationManager) getSystemService(NOTIFICATION_SERVICE);‎
            ‎  notificationManager.notify((int) System.currentTimeMillis()‎،‎ noti);‎
            ‎ }‎
            ‎ ‎
            ‎}

    ساختن activity ها

    دو activity ایجاد کنید، اولین activity باید دومی را از طریق Intent راه اندازی می کند.
    کد:
          package com.vogella.android.lifecycle.activity;‎
    
        import android.content.Intent;‎
    
        import android.os.Bundle;‎
    
        import android.view.View;‎
    
    public class MainActivity extends TracerActivity {‎
    
        ‎ ‎ @Override
    
        ‎ protected void onCreate(Bundle savedInstanceState) {‎
    
            ‎  super.onCreate(savedInstanceState);‎
    
            ‎  setContentView(R.layout.activity_main);‎
    
            ‎ }‎
    
            ‎ public void onClick(View view) {‎
    
            ‎  Intent intent = new Intent(this،‎ SecondActivity.class);‎
    
            ‎  startActivity(intent);‎
    
            ‎ }‎
    
            ‎} ‎
    
        package com.vogella.android.lifecycle.activity;‎
    
        import android.os.Bundle;‎
    
        import android.app.Activity;‎
    
        import android.view.Menu;‎
    
    public class SecondActivity extends TracerActivity {‎
    
        ‎ @Override
    
        ‎ protected void onCreate(Bundle savedInstanceState) {‎
    
            ‎  super.onCreate(savedInstanceState);‎
    
            ‎  setContentView(R.layout.activity_second);‎
    
            ‎ }‎
    
            ‎}
    هشدار

    از ثبت هر دو intent در مانیفست اندروید اطمینان کسب کنید.

    تست کردن

    برنامه ی کاربردی را راه اندازی کرده و دومین activity را فعال کنید. کلیه ی اختطارها را مرور کرده و سعی کنید دلیل اینکه چرا اتفاقات به این ترتیب رخ می دهند را پیدا کنید.

    در activity دوم روی دکمه ی بازگشت کلیک کنید. بررسی کنید چرا onSaveInstanceState () فراخوانده نشد.

    دکمه ی home را در activity دوم فشار دهید. جهت قرارگیری صفحه ی برنامه ی شبیه ساز خود را با استفاده از میان بر CTRL+F11 تغییر داده و بررسی کنید کدام life-cycle method (متدهای ویژه ی چرخه ی حیات) activity صدا زده می شوند. بررسی کنید آیا فقط activity دوم بازسازی می شود یا این اتفاق برای اولی نیز روی می دهد.

    گزینه ی Don't keep activities را در تنظیمات فعال کرده و دوباره بررسی کنید کدام متدها فراخوانده می شود.

    حالت لحظه ای (instance state)

    یک آرایه ی رشته ای (string array) ایجاد کرده سپس با استفاده از آرایه ی نام برده یک Spinner view به اولین activity خود اضافه کنید. مثال زیر strings.xml و فایل layout بکاربرده شده توسط اولین activity را فهرست کرده است.
    کد:
    <?xml version="1.0" encoding="utf-8" ?>
    
    <resources>
    
       <string name="app_name">Lifecycle</string>
    
      <string name="action_settings">Settings</string>
    
      <string name="hello_world">Hello world!</string>
    
      <string-array name="operating_systems">
    
        <item>Ubuntu</item>
    
        <item>Android</item>
    
        <item>iOS</item>
    
      </string-array>
    
     </resources>
    
    <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    
           xmlns:tools="http://schemas.android.com/tools"
    
           android:id="@+id/LinearLayout1"
    
           android:layout_width="match_parent"
    
           android:layout_height="match_parent"
    
           android:orientation="vertical"
    
           android:paddingbottom="@dimen/activity_vertical_margin"
    
           android:paddingleft="@dimen/activity_horizontal_margin"
    
           android:paddingright="@dimen/activity_horizontal_margin"
    
           android:paddingtop="@dimen/activity_vertical_margin"
    
           tools:context=".MainActivity">
    
       <spinner android:id="@+id/spinner"
    
           android:layout_width="wrap_content"
    
           android:layout_height="wrap_content"
    
           android:layout_marginright="58dp"
    
           android:entries="@array/operating_systems" />
    
       <button android:id="@+id/button1"
    
          android:layout_width="wrap_content"
    
          android:layout_height="wrap_content"
    
          android:onclick="onClick"
    
          android:layout_gravity="bottom"
    
          android:text="Start new Activity" />
    
     </linearlayout>
    اندروید خود به صورت خودکار حالت یک spinner را احیا (restore) می کند. مطمئن شوید انتخاب و گزینش spinner بین تغییرات نحوه ی پیکربندی و بازآغازی activity ها توسط سیستم اندروید ذخیره گشته و احیا می شود.

    حال تساوی آرایه ی ثابت (fixed array assignment) را از layout حذف کرده و آن را از طریق source code به Spinner تخصیص دهید.
    کد:
    // configure the spinner in code‎
    
        Spinner spinner = (Spinner) findViewById(R.id.spinner);‎
    
        String[] values = getResources().getStringArray(R.array.operating_systems);‎
    
        ArrayAdapter<String> adapter = ‎
    
        ‎ new ArrayAdapter<String>(this،‎ android.R.layout.simple_list_item_1‎،‎ values);‎
    
        spinner.setAdapter(adapter);
    تساوی ثابت (fixed assignment) را از فایل layout خود حذف کنید.
    کد:
    <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    
           xmlns:tools="http://schemas.android.com/tools"
    
           android:id="@+id/LinearLayout1"
    
           android:layout_width="match_parent"
    
           android:layout_height="match_parent"
    
           android:orientation="vertical"
    
           android:paddingbottom="@dimen/activity_vertical_margin"
    
           android:paddingleft="@dimen/activity_horizontal_margin"
    
           android:paddingright="@dimen/activity_horizontal_margin"
    
           android:paddingtop="@dimen/activity_vertical_margin"
    
           tools:context=".MainActivity">
    
     
    
      <spinner android:id="@+id/spinner"
    
           android:layout_width="wrap_content"
    
           android:layout_height="wrap_content"
    
           android:layout_marginright="58dp" />
    
     
    
      <button android:id="@+id/button1"
    
          android:layout_width="wrap_content"
    
          android:layout_height="wrap_content"
    
          android:onclick="onClick"
    
          android:layout_gravity="bottom"
    
          android:text="Start new Activity" />
    
     
    
    </linearlayout>
    اطمینان کسب کنید موقعیت در spinner هنوز به صورت خودکار احیا (restore) می شود.


    ادامه مطلب رو میتونید از سایتwww.tahlildadeh.com مشاهده کنید.
لطفا صبر کنید...
X