android diaries

۳ مطلب با موضوع «کلیات اندروید» ثبت شده است

لایه دوم در معماری اندروید ، لایه framework هست که رابط بین اپلیکیشن و سخت افزاره . شامل یه سری کامپوننت هست. که واحدهای اصلی اپلیکیشن های اندروید هستن. یعنی یه برنامه نویس اندروید در 80 درصد مواقع داره با اینا کار میکنه. هر موقع که بخایم با اینا کار کنیم باید توی فایل androidmanifest.xml تعریفشون کنیم. 
این کامپوننت ها اینان :
1-activity
2-service
3-broadcast receiver
4-content provider

1- activity
 تمام چیزی هست که ما در صفحه نمایش میبینیم. یعنی قسمت های مختلف یه برنامه رو داخل یه اکتیویتی پیاده سازی میکنیم. یعنی یه صفحه از اپلیکیشن رو میگیم اکتیویتی. مثلا باتن ها ، تکس باکس ها و ... داخل یه اکتیویتی قرار میگیرن. در واقع می تونیم بگیم که اکتیوتی معادل form در سی شارپ هست. اکتیویتی از دو قسمت مهم تشکیل شده. یکی layout یا ظاهر برنامه که یه فایل .xml هست و یکی دیگه هم یه فایل .java هست که کدنویسی ها داخل اون انجام میشه. اینکه مثلا وقتی این باتن رو میزنیم چه اتفاقی بیفته. 
اکتیویتی ها یه مبحث مهم دارن به اسم lifecycle  یا چرخه حیات که خیلی مهمه. و بعدا بهش می پردازم. 
یه مبحث مهم دیگه هم متدهای override هست که اونا هم مقاله جدا میخواد. 
نحوه تعریف یه کلاس به عنوان یه اکتیویتی ، همون مبحث ارث بری هست که توی جاوا یا سی پلاس میخوندیم با استفاده از کلمه کلیدی extends به این صورت :
گفتم که برای اینکه از یه اکتیویتی استفاده کنیم باید اونو داخل فایل منیفست تعریف کنیم . یعنی اگه برنامه ما 5 تا اکتیویتی داره باید 5 بار هم تعریف بشه با نام خودش و ادرسش هم پکیجش هست . به این صورت :


2- service
سرویس ها یه کامپوننت هستن که برای انجام عملیات در پشت صحنه استفاده میشن. مثلا وقتی که میخوایم برنامه برامون یه دیتایی دانلود کنه (این یه نکته داراه ، بعدا میگم) یا مثلا یه موزیکی پخش کنه در حالیکه کاربر داره با بقیه بخش های برنامه هم کار کنه باید از سرویس استفاده کنیم. 
یکی دیگه از کاربردهای سرویس ها انجام عملیاتی هست که طولانی مدته و یه کم سنگین. یعنی اگه اون کار رو به یه اکتیویتی بسپریم ، یعنی لی اوت داشته باشه ، گوشی هنگ میکنه. 
در واقع سرویس ها در کنار اکتیویتی ها وظیفه اجرای کاری رو به عهده میگیرن.
گفتم که سرویس ها در پشت صحنه و خارج از دید کاربرد اجرا میشن یعنی layout  ندارن 
تعریف یه کلاس به عنوان سرویس :
و در فایل منیفست :

3-contentProvider
توی جلسه قبل گفتم که در لینوکس و اندروید هیچ اپلیکیشنی به داده های اپلیکیشن دیگه دسترسی نداره. ولی اینطوری که هیچ ارتباطی نباشه هم که نمیشه... بنابراین راه ارتباطی بین اپلیکیشن های مختلف contentProvider هست
من سایت های فارسی و انگلیسی دیگه ای خوندم که ببینم اطلاعات دیگه ای راجع به contentProvvider دارن یا نه اما دیدم که همشون یه حرف رو هی دارن تکرار میکنن
و 

4-broadcast receiver
بعضی وقتا توی برنامه ما لازم داریم که نسبت به یه عمل خاصی ، یه عکس العملی نشون بدیم که خیلی روند خاص و مشخصی نداره. مثلا هر موقع کاربر تاریخ دستگاهشو رو عوض کرد، ما هم یه حرکتی بزنیم . یا مثلا اگه ما توی برنامه یه کاری کردیم به بقیه برنامه ها هم بگیم. اصلا معنی کلمه اش هم پراکندن و دریافت هست. 
و 

تمامی این کلاس ها یه سری متد دارن که از طریق اونها وظایفشون رو انجام میدن . هرکدوم چندین جلسه توضیح دارن ولی اینجا ما یه معرفی کلی میکنم و بعدا مفصل بهشون میپردازم
۰ نظر موافقین ۰ مخالفین ۰ ۱۵ بهمن ۹۵ ، ۲۰:۳۰
نویسنده آماتور
گفتم که اندروید بر پایه نسخه اصلاح شده لینوکس هستش بنابراین از قواعد لینوکس پیروی میکنه. یعنی هر اپ اندروید که میزنیم میاد در ساختار لینوکس میشینه.
توی حوزه اندروید باید با معماری اندروید ، یعنی لایه های مختلف سیستم عامل آشنا باشیم. این به ما یه نگاه کلان میده . خیلی به درد برنامه نویسی نمیخوره. فقط باعث میشه تسلط داشته باشیم که کجای کار هستیم :)


لایه اول که لایه application  هست ، همون اپلیکیشن هایی هست که ماها می نویسیم و توسط end user ها استفاده میشه. 
لایه دوم شامل یه سری کامپوننت ها و امکانات اپلیکیشن هست که رابط بین اپلیکیشن و سخت افزاره. با c و c++ زده شده و از تیکه تیکه اش برای کنترل سخت افزار استفاده میشه . 
لایه سوم کتابخونه های اندروید هست 
یه قسمتی که خیلی مهمه برنامه نویسای اندروید بدونن اون قسمت زرد رنگه . داخل اون میبینیم که نوشته dalvik virtual machine. این ماشین مجازی اندرویده. میدونیم که خیلی از مزایای جاوا که خیلی بهش پز میده همین قضیه ماشین مجازیه. اینکه اگه این ماشین مجازی روی هر سیستم عاملی سوار بشه میتونه کدهای جاوا رو ران کنه. دالویک همون jvm هست که بهینه شده تا روی موبایل و ... سوار بشه و کار کنه. 
فایل اجرایی این میشه یه فایل اجرایی با پسوند .dex  که وقتی هم apk رو مهندسی معکوس میکنیم و میخوایم کدهاش رو ببینیم ، همین فایل رو تبدیل میکنیم.  این فایل یه فایل بسیار فشرده و بهینه ای هست و میاد روی ماشین مجازی اجرا میشه و به بایت کد تبدیل میشه و سیستم اینا رو اجرا میکنه. 
پایین ترین سطح هم کرنل لینوکس هست. 
 یه نکته دیگه ای که هست اینه که ساختار لینوکس اینجوریه که هر اپلیکیشنی که روی اون قرار میگیره ، دارای یه user ای هست که ادمین اون اپلیکیشن هست. هیچ ادمین دیگه ای دسترسی به ادمین اپ دیگه رو نداره. بخاطر همینه که لینوکس و به تبع اون اندروید امنیت خیلی بالایی داره 
ادمینی که به همه user ها دسترسی داره ادمین root هست. وقتی میگیم یکی رفته گوشیش رو روت کرده یعنی رفته همه ادمین ها رو کرده ادمین root . یعنی همه به همه دسترسی دارن.
توی درس بعدی راجع به مهمترین کامپوننت های لایه دوم صحبت میکنیم
۰ نظر موافقین ۰ مخالفین ۰ ۱۵ بهمن ۹۵ ، ۱۸:۳۹
نویسنده آماتور
اندروید ، یه سیستم عامل بر مبنای نسخه اصلاح شده لینوکسه. بیشترین کاربردش برای موبایل و تبلته. ولی برای دستگاه های مختلفی مثل ساعت تلویزیون هم هست. 
گوگل اندروید رو به صورت open source و رایگان عرضه کرده. بخاطر همین وقتی خیلی از شرکتایی که موبایل و تبلت تولید میکنند به سلیقه خودشون اندروید رو تغییر میدن و چیزایی رو بهش اضافه میکنن.
این ویژگی باعث شده که خیلیا جذبش بشن. هر کسی از ده کوره های هندوستان تا برنامه نویسای حرفه ای امریکا و کره بتونه راحت یاد بگیره. 
و خیلی از شرکتا که میخوان وارد عرصه تلفن هوشمند بشه فوری میره سراغ اندروید . و اگه دقت کنین تولید کننده های ios و windows phone انحصاری ان ولی اندروید چندیییین شرکت از شرق و غرب عالمن.
البته این یه کم بدی هم حساب میشه. چون دستگاه های پشتیبانی کننده اندروید خیلی متنوع ان و تولید برنامه رو یه کم سخن میکنند و برنامه نویسا واقعا باید یه کم سختی بکشن چون نگران ظاهر برنامه اشون توی دستگاه های مختلف باشن ولی یه برنامه نویس ios اصلا این نکرانی رو نداره چون دستگاه هاش محدودن.
یه ویژگی دیگه اندروید وجود نسخه های مختلفه. گوگل موقع نام گذاری نسخه های مختلف از اسم شیرینیا به ترتیب حروف الفبا استفاده میکنه. از حرف a که نسخه 1 هست تا الان که نسخه 7 هست به اسم nougha .
هم عرض با نسخه های مختلف اندروید یه سری بسته های برنامه نویسی هم ارائه میده که به ازای هر نسخه ممکنه چندین آپدیت بیاد یعنی هم عرض نیستن (API)
۰ نظر موافقین ۰ مخالفین ۰ ۰۸ بهمن ۹۵ ، ۱۷:۰۲
نویسنده آماتور