چرا از معماری تک اکتیویتی استفاده کنیم؟


دنیای بهتر با معماری تک اکتیویتی

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

مزایای استفاده از معماری تک اکتیویتی

  • جابجایی سریع بین قسمت های مختلف برنامه
  • اجرای روان تر انیمیشن ها
  • پیاده سازی آسان تر انیمیشن های پیچیده
  • جابجایی دیتا بین scope های مختلف برنامه به جای استفاده مداوم از singleton
  • ساده شدن چرخه حیات اکتیویتی
  • به اشتراک گذاری view های مشترک بین صفحه های مختلف برنامه
  • مصرف کمتر باتری حین کار با برنامه

استفاده بهتر از معماری تک اکتیویتی

  • تبادل داده داخل اکتیویتی ها

ممکن است لازم شود میان اکتیویتی ها داده تبادل کنیم. به این منظور می توانیم بین scope های مختلف اکتیویتی این تبادل را عملی سازیم. یعنی بسته ای از جنسی که اکتیویتی ها آن را به خوبی می شناسند. در واقع یک view مثل پاکت نامه و داده ها مثل محتوای نامه بین اکتیوتی ها جابجا می شوند. به این شکل بین هر دو قسمتی که لازم باشد به راحتی می توان ارتباط برقرار نمود. در نتیجه لازم نیست در سطح اپلیکیشن این تبادل انجام شود. به راحتی در سطح اکتیویتی ها مدیریت می شود.

به این منظور راه حلی در معماری single activity وجود دارد که به شکل قطعه کد زیر است:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val navController = findNavController(R.id.nav_controller_fragment)
    val bundle = Bundle()
    bundle.putString("name","your value")
    navController.setGraph(navController.graph,bundle)
}

و در فرگمنت :

val args: MainFragmentArgs by navArgs()
  textView.text = args.name

در navGraph برنامه :

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/mobile_navigation"
        app:startDestination="@id/mainFragment">

<fragment android:id="@+id/mainFragment"
          android:name="com.haidar.mediasaver.fragments.MainFragment"
          android:label="main_fragment"
          tools:layout="@layout/main_fragment">
    <argument android:name="name"
              app:argType="string"/>
</fragment>

 

 

به این پست امتیاز دهید

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

میانگین امتیاز 4.3 / 5. تعداد: 3

از امتیاز شما متشکریم

2 دیدگاه در نوشته: “چرا از معماری تک اکتیویتی استفاده کنیم؟

  1. محسن گفت:

    از آموزشهایی که تا الان گذاشتین میشه فهمید طرفدار سینگل اکتیویتی و همچنین مدل ویو هستین، میشه چند مورد از اپلیکیشن های معروف که ازین معماری استفاده کردن مثال بزنید.

    1. نسیم نژند گفت:

      معروف ترین اپلیکیشن هایی که میشناسم با این معماری اپ گوگل پلی و بازار هستند.
      این سورس موجود در گیت هاب هم میتونه مثال خوبی باشه، به زبان کاتلین :
      https://github.com/Mustafashahoud/MovieApp

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Enter Captcha Here : *

Reload Image