بررسی Activityها - در برنامه نویسی اندروید

اگر با زبان برنامه نویسی C، C++ یا جاوا کار کرده اید، حتماً دیده اید که برنامه شما از تابع main() شروع می شود. به روشی بسیار مشابه، سیستم اندروید برنامه خود را با یک Activity آغاز می کند که با فراخوانی متد ()onCreate این اکتیویتی کار خود را آغاز میکند. دنباله ای از متدهای overrideی وجود دارد که یک اکتیویتی را راه اندازی می کند و دنباله ای از متدهای overrideی که یک اکتیویتی را از بین می برند همانطور که در نمودار چرخه عمر اکتیویتی زیر نشان داده شده است: (منبع این تصویر از سایت رسمی اندروید می باشد)

Activityها - در برنامه نویسی اندروید

کلاس Activity متدهای زیر را تعریف می کند، یعنی رویدادها. شما نیازی به پیاده سازی همه متدهای callback ندارید. با این حال، مهم است که هر یک را درک کنید و مواردی را اجرا کنید که اطمینان حاصل شود برنامه شما مطابق انتظار کاربران عمل می کند.

متد های callback و توضیحات ردیف
onCreate()

این اولین callback است و زمانی که اکتیویتی برای اولین بار ایجاد می شود، فراخوانی می شود.

1
onStart()

این callback زمانی فراخوانی می شود که اکتیویتی برای کاربر قابل مشاهده باشد.

2
onResume()

هنگامی که کاربر شروع به تعامل با برنامه می کند، این متد فراخوانی می شود.

3
onPause()

اکتیویتی مکث شده ورودی کاربر را دریافت نمی کند و نمی تواند هیچ کدی را اجرا کند و زمانی که اکتیویتی فعلی متوقف شده و اکتیویتی قبلی از سر گرفته می شود، فراخوانی می شود.

4
onStop()

این callback زمانی فراخوانی می شود که اکتیویتی دیگر قابل مشاهده نباشد.

5
onDestroy()

این callback قبل از از بین رفتن اکتیویتی توسط سیستم فراخوانی می شود.

6
onRestart()

این callback زمانی فراخوانی می شود که اکتیویتی پس از توقف مجدد آن شروع شود.

7

مثال

این مثال شما را با مراحل ساده چرخه عمر اکتیویتی برنامه اندروید بصورت کامل آشنا میکند. مراحل زیر را دنبال کنید:

توضیحات مرحله
ابتدا یک پروژه جدید در اندروید استودیو با یک پکیج دلخواه ایجاد کنید و ادامه مراحل را دنبال کنید. 1
کدهای درون فایل MainActivity.class را مطابق کدهای که در پایین آورده ایم تغییر بدهید. 2
برنامه را بر روی یک تلفن واقعی یا شبیه ساز اجرا کنید و تست را انجام بدهید. 3

فایل MainActivity.java

package com.foray.articlelib;

import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    String msg = "7Cloner Android : ";

    /** این متد زمانی که اکتیویتی ایجاد شود اجرا میشود*/
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        printLog("printLog");
    }

    /** این متد زمانی که اکتیویتی به نمایش در اید فراخوانی میشود. */
    @Override
    protected void onStart() {
        super.onStart();
        printLog("onStart");
    }

    /** این متد زمانی که اکتیویتی از دید خارج شود فراخوانی میشود. */
    @Override
    protected void onResume() {
        super.onResume();
        printLog("onResume");
    }

    /** این متد زمانی که اکتیویتی دیگری جای این اکتیویتی را بگیرد فراخوانی میشود. */
    @Override
    protected void onPause() {
        super.onPause();
        printLog("onPause");
    }

    /** این متد زمانی که اکتیویتی کلا از بین برود فراخوانی میشود. */
    @Override
    protected void onStop() {
        super.onStop();
        printLog("onStop");
    }

    /** این متد زمانی که اکتیویتی میخواهد از بین برود فراخوانی میشود. */
    @Override
    public void onDestroy() {
        super.onDestroy();
        printLog("onDestroy");
    }
    
    private void printLog(String tag){
        Log.d(msg, "متد XXX اجرا شد.".replace("XXX", tag));
    }
    
}

وقتی که اکتیویتی ایجاد میشود اولین متدی که فراخوی میشود onCreate میباشد. در این متد باید فایل مربوط به UI را برای کاربر تنظیم کنیم. برای تنظیم UI مربوط به یک اکتیویتی از متد setContentView استفاده میکنیم. به کدهای زیر دقت کنید:

setContentView(R.layout.activity_main);

باید دقت داشته باشید هر اکتیویتی که ایجاد میکنیم و نیاز داریم که در پروژه از آن استفاده کنیم باید در فایل AndroidManifest.xml اعلام کنیم. در صورت عدم انجام اینکار هنگام اجرای اپلیکیشن در زمان تغییر اکتیویتی به آن اکتیویتی مد نظر که اعلام نشده است, برنامه متوقف میشود. برای اعلام یک اکتیویتی باید به این صورت عمل کنید:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.foray.articlelib">

    <uses-permission android:name="android.permission.CAMERA" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.ArticleLib">
 
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

برای اینکه یک اکتیویتی را مشخص کنیم که در اول کار باید اجرا شود باید کدهای زیر را به آن اضافه کنیم :

<intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

هر پروژه تنها میتواند یک activity خاص برای اجرا داشته باشد. سرآخر بهتر است برویم برای اجرا و مشاهده نتیجه. در مثال بالا ما از log استفاده کرده ایم تا بتوانیم متنی را در خروجی چاپ کنیم. هر زمان که یک متد فراخوانی شود یک لاگ در ترمینال پرینت میشود. به تصویر زیر دقت کنید:

اجرای اکتیویتی در اندروید

بعد از بستن کامل برنامه :

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

 

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

مقالات پیشنهادی

اندروید

اندروید یک سیستم عامل می باشد که توسط گوگل توسعه داده میشود, این سیستم عامل بر پایه نسخه ی اصلاح شده ی هسته ی لینوکس و دیگر نرم افزار های متن باز طراحی شده است و ...


۱۰۹۴
۰
۲۹ آبان ۱۳۹۹

وردپرس

وردپرس یک سیستم مدیریت محتوای قوی می باشد که با استفاده از آن می توان وب سایت ها و وبلاگ های گوناگونی با هر شرایطی را طراحی کرد چرا که این سیستم و ...


۸۴۲
۰
۱۳ آذر ۱۳۹۹

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...


۹۶۳
۰
۱۲ آذر ۱۳۹۹

هک و امنیت

در تعریف کلی این واژه می توان گفت که به پیدا کردن راه های نفوذ به یک حریم شخصی و استفاده غیر مجاز از آن را هک می نامیم. هدف از هک می تواند ...


۹۹۶
۰
۱۳ آذر ۱۳۹۹