توسعه ی نرم افزارهای اندروید (قسمت سوم)

پنجشنبه 9 اردیبهشت 1395

در ادامه ی مقاله های توسعه ی نرم افزار های اندروید می خواهیم در این مقاله در مورد ایجاد activity جدید در نرم افزارها و سوییچ کردن از یک activity به activity دیگر صحبت نماییم.

توسعه ی نرم افزارهای اندروید (قسمت سوم)

قبل از خواندن این مقاله می توانید دو مقاله ی زیر را مطالعه نمایید تا به درک شما در این مقاله بیشتر کمک نماید:

توسعه ی نرم افزار های اندروید(قسمت اول)

توسعه ی نرم افزارهای اندروید(قسمت دوم)

در این مقاله می خواهیم در مورد انتقال از یک activity به activity دیگر با هم صحبت نماییم، و اینکه چطور یک activity در چه زمانی destroy می شود همه ی این ها چرخه ی حیات یک activity است که ما در مورد آن می خواهیم صحبت نماییم، البته قبلا در مورد چرخه ی حیات برنامه های اندروید صحبت کرده ایم می توانید مقاله ی آن را مطالعه نمایید.

activity در اندروید یک سرویس ارائه شده توسط اندروید است که مسئولیت رسیدگی به صفحات مختلف را دارد، اساسا activity ها بخشی از نرم افزار است، activity صفحه ای است که شما می توانید تمام ویجت ها و ابزارهای خود را داخل آن قرار دهید

چرخه ی حیات activity چیست؟

هر activity زمانی که start می خورد چرخه ی حیات خود را آغاز کرده است و تا زمانی که کار آن تمام نشده است در چرخه ی حیات قرار دارد به محض تمام شدن کار activity مورد نظر از چرخه ی حیات خارج خواهد شد، هر activity که ما معرفی می نماییم در فایل manifest معرفی می شود.

چرخه ی حیات activity ها دارای 7 مرحله است که به صورت زیر خواهد بود:

1-oncreate:به محض اینکه صدا زده می شود activity شروع به کار می نماید.

2-onstart:وقتی این متد را صدا می زنیم activity مورد نظر برای کاربر نمایش داده می شود.

3-onResume:زمانی که این متد صدا زده می شود یعنی کاربر می تواند با activity مورد نظر در تعامل باشد.

4-onPause:زمانی که این متد صدا زده می شود یعنی کاربر می خواهد از یک activity به یک activity دیگر برود.

5-onStop:زمانی که این متد صدا زده شود یعنی مدت نمایش activity طولانی نخواهد بود.

6-onRestart:این متد زمانی صدا زده می شود که کاربر activity را از اول اجرا می نماید.

7-onDestroy:این متد زمانی که صدا زده می شود activity مورد نظر از بین می رود.

چرخه ی حیات activity:

در کد زیر می خواهیم یک activity درست نماییم:

import android.os.Bundle;  
import android.app.Activity;  
import android.util.Log;  
import android.view.Menu;  
public class MainActivity extends Activity  
{@  
    Override  
    protected void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        Log.d("my_lifecycle", "onCreate Method is invoked");  
    }@  
    Override  
    protected void onStart()  
    {  
        super.onStart();  
        Log.d("my_lifecycle ", "onStart Method is invoked");  
    }@  
    Override  
    protected void onResume()  
    {  
        super.onResume();  
        Log.d("my_lifecycle ", "onResume Method is invoked");  
    }@  
    Override  
    protected void onPause()  
    {  
        super.onPause();  
        Log.d("my_lifecycle ", "onPause Method is invoked");  
    }@  
    Override  
    protected void onStop()  
    {  
        super.onStop();  
        Log.d("my_lifecycle ", "onStop Method is invoked");  
    }@  
    Override  
    protected void onRestart()  
    {  
        super.onRestart();  
        Log.d("my_lifecycle ", "onRestart Method is invoked");  
    }@  
    Override  
    protected void onDestroy()  
    {  
        super.onDestroy();  
        Log.d("my_lifecycle ", "onDestroy Method is invoked");  
    }  
}  

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

در زیر یک مثال می خواهیم قرار دهیم که با زدن یک دکمه از یک activity به activity دوم برویم

import android.app.Activity;  
import android.content.Intent;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
  
  
public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        Button b = (Button) findViewById(R.id.second_activity_button);  
        b.setOnClickListener(new View.OnClickListener() {  
      @Override  
            public void onClick(View v) {  
  
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);  
                startActivity(intent);  
            }  
        });  
    }  
} 

در فایل xml قطعه کد زیر را قرار می دهیم:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:id="@+id/layout_login"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:orientation="vertical"  
        android:layout_gravity="top">  
      
        <TextView  
            android:id="@+id/heading_main"  
            android:layout_height="wrap_content"  
            android:layout_width="wrap_content"  
            android:text="MainActivity"  
            android:textSize="20sp"  
            android:textStyle="bold"  
            android:layout_gravity="center_horizontal"  
            android:layout_marginTop="10dp"  
            />  
      
        <LinearLayout  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            android:layout_marginTop="60dp"  
            android:orientation="horizontal"  
            android:layout_gravity="center_horizontal" >  
      
            <Button  
                android:id="@+id/second_activity_button"  
                android:layout_gravity="center"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:layout_marginLeft="140dp"  
                android:text="Go to Second" />  
      
      
        </LinearLayout>  
      
    </LinearLayout>  

در کلاس دوم قطعه کد زیر قرار می گیرد:

import android.app.Activity;  
import android.os.Bundle;  
  
public class SecondActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.second_activtiy);  
    }  
}

در فایل activity دوم هم قطعه کد زیر را قرار دهید:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical"  
    android:gravity="center">  
    <TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:id="@+id/my_text"  
        android:gravity="center"  
        android:text="Second Activity"  
        android:textSize="40dp"/>  
  
</LinearLayout>  

فایل androidmanifest هم باید دو activity زیر را تعریف نمایید:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="com.example.lucifer.myapplication">  
  
    <application  
        android:allowBackup="true"  
        android:icon="@mipmap/ic_launcher"  
        android:label="@string/app_name"  
        android:supportsRtl="true"  
        android:theme="@style/AppTheme">  
        <activity android:name="com.example.lucifer.myapplication.MainActivity">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
        <activity android:name=".SecondActivity">  
  
        </activity>  
    </application>  
  
</manifest>  

خروجی به صورت زیر خواهد بود:

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید