اندروید یک سیستم عامل متن باز و مبتنی بر لینوکس است که در موبایل، تبلت، تلویزیون و غیره استفاده می شود.
- متن باز: به معنای عدم نیاز به لایسنس و هزینه های توزیع و توسعه - مستقل از پلتفرم: از سیستم عامل های ویندوز، مک و لینوکس پشتیبانی می کند. - پشتیبانی از فناوری های مختلف: از فناوری های دوربین، بلوتوث، وای فای، گفتار، EDGE و غیره پشتیبانی می کند. - ماشین مجازی بسیار بهینه شده: اندروید از یک ماشین مجازی بسیار بهینه شده برای دستگاه های تلفن همراه استفاده می کند که DVM (ماشین مجازی Dalvik) نامیده میشود.
معماری اندروید از 5 جزء اصلی تشکیل شده است: 1) هسته لینوکس (Linux Kernel) قلب معماری اندروید است که در ریشه معماری اندروید وجود دارد. هسته لینوکس مسئول درایورهای دستگاه، مدیریت انرژی، مدیریت حافظه، مدیریت دستگاه و دسترسی به منابع است. 2) کتابخانه های بومی (Native Libraries) در بالای هسته لینوکس، کتابخانه های بومی مانند WebKit، OpenGL، FreeType، SQLite، Media، کتابخانه زمان اجراC (libc) و غیره قرار دارند. کتابخانه WebKit مسئول پشتیبانی مرورگر، SQLite برای پایگاه داده، FreeType برای پشتیبانی از فونت، Media برای پخش و ضبط فرمت های صوتی و تصویری است. 3) Android Runtime در Android Runtime، تعدادی کتابخانه مهم و DVM (Dalvik Virtual Machine) قرار دارد که وظیفه اجرای برنامه اندروید را بر عهده دارد. DVM مانند JVM است اما برای دستگاه های تلفن همراه بهینه شده است. حافظه کمتری مصرف می کند و عملکرد سریعی را ارائه می دهد. 4) فریم ورک اندروید (َAndroid Framework) در بالای کتابخانه های بومی و Android Runtime، فریم ورک اندروید قرار دارد. فریم ورک اندروید شامل API های اندروید مانند رابط کاربری (UI)، تلفن، منابع، مکان ها، Content Providerها(داده ها) و Package Manager هاست. در فریم ورک اندروید میتوانید تمام کلاسها و متدهایی را که توسعهدهندگان برای نوشتن برنامهها در محیط اندروید به آن نیاز دارند، بیابید. 5) برنامه های کاربردی در بالای فریم ورک اندروید، برنامه هایی وجود دارد. همه برنامه ها مانند خانه(Home)، مخاطبین(Contacts)، تنظیمات(Settings)، بازی هاو مرورگرهااز فریم ورک اندروید استفاده می کنند. که فریم ورک اندروید از Android Runtime و کتابخانه های بومی اندروید استفاده می کند. Android Runtime و کتابخانه های بومی نیز به نوبت خوداز لینوکس کرنال استفاده می کنند.
Aestro Blender Cupcake Donut Eclair Froyo Gingerbread Honeycomb Ice Cream Sandwich Jelly Bean KitKat Lollipop Marshmallow ...
Google Android SDK مجموعه ابزاری است که توسعه دهندگان برای نوشتن برنامه در دستگاه های دارای Android به آن نیاز دارند که شامل یک رابط گرافیکی است که یک محیط مبتنی بر اندروید را شبیهسازی میکند و به آنها اجازه میدهد کدهای خود را آزمایش و اشکالزدایی کنند.
شبیه ساز مانند یک دستگاه تلفن همراه واقعی عمل می کند. برنامه نویسان می توانند کدها را بنویسند و آزمایش کنند و حتی اشکال زدایی کنند. شبیه سازها مکانی امن برای تست کدها هستند، به خصوص اگر در مراحل اولیه طراحی باشند.
Activity در جاوا یک صفحه منفرد است که نشان دهنده GUI (رابط کاربری گرافیکی) است که کاربران می توانند برای انجام کاری مانند شماره گیری تلفن، مشاهده ایمیل و غیره با آن تعامل داشته باشند.
- ()onCreate : زمانی فراخوانی می شود که اکتیویتی ایجاد شود. با استفاده از این، نماها ایجاد می شوند و داده ها از بسته ها جمع آوری می شوند. - ()onStart : در صورتی فراخوانی می شود که Activity برای کاربر قابل مشاهده باشد. اگر َActivity در پیشزمینه قرار گیرد، میتواند توسط ()onResume یا در صورت مخفی شدن ()onStop جایگزین شود. - ()onResume : زمانی فراخوانی می شود که Activity با کاربر تعامل برقرار کند. - ()onPause : زمانی فراخوانی میشود که Activity به پسزمینه منتقل شود اما هنوز از بین نرود. - ()onStop : زمانی فراخوانی می شود که یک Activity دیگر برای کاربر قابل مشاهده نباشد. - ()onRestart : پس از توقف Activity و قبل از شروع مجدد آن فراخوانی می شود. - ()onDestroy : زمانی فراخوانی می شود که Activity به پایان برسد یا از بین برود.
سرویس مؤلفهای است که برای انجام عملیات در پسزمینه مانند پخش موسیقی، انجام تراکنشهای شبکه، تعامل با ارائهدهندگان محتوا و غیره استفاده میشود. هیچ رابط کاربری (واسط کاربری) ندارد و میتواند به طور نامحدود در پس زمینه اجرا شود حتی اگر برنامه از بین برود. android.app.Service زیر کلاس کلاس ContextWrapper است.
Activity ها را می توان هر زمان که کاربر بخواهد بسته یا خاتمه داد. در حالی که، سرویس ها برای اجرای پشت صحنه طراحی شده اند و می توانند به طور مستقل عمل کنند. اکثر سرویس ها بدون توجه به اینکه آیا فعالیت خاصی در حال اجرا هستند یا خیر، به طور مداوم اجرا می شوند.
- Active : اگر Activity در پیش زمینه باشد. - Paused : اگر Activity در پسزمینه باشد ولی همچنان قابل مشاهده باشد. - Stopped : اگر Activity به علت فعال شدن Activity دیگری قابل مشاهده نباشد. - Destroyed : زمانی که فرآیند Activity از بین می رود یا به پایان می رسد.
از Intent برای پیام رسانی یا درخواست یک عمل از سایر اجزای برنامه استفاده می شود. همچنین می توان از آن برای فراخوانی یک Activity، ارسال اس ام اس، ارسال ایمیل، نمایش یک صفحه وب و غیره استفاده کرد. همچنین Intent پیامهای اعلان را از داخل یک دستگاه دارای Android فعال به کاربر نشان میدهد و به کاربر در مورد وضعیت خاصی که رخ داده است هشدار می دهد. دو نوع Intent در اندروید وجود دارد: Implicit Intent - برای فراخوانی اجزای سیستم استفاده می شود. Explicit Intent- برای فراخوانی کلاس Activity استفاده می شود.
Intent i = new Intent(getApplicationContext(), ActivityTwo.class);
startActivity(i);
این سوال از من پرسیده شده است  + 
AndroidManifest.xml build.xml bin src res assets Build.gradle
فایل AndroidManifest.xml حاوی اطلاعاتی در مورد برنامه است که سیستم اندروید باید قبل از اجرای کدها بداند. وجود این فایل در هر برنامه اندرویدی ضروری است و در دایرکتوری اصلی قرار دارد. این فایل چندین کار را انجام می دهد از جمله: - ارائه یک نام منحصر به فرد برای بسته جاوا (Java Package). - توصیف اجزای مختلف برنامه مانند Activity، Service و بسیاری موارد دیگر. - اعلان کلاس هایی که این مؤلفه ها را پیاده سازی می کنند.
پروژه ای که در حال توسعه است، پس از اتمام، به یک فایل apk تبدیل می شود. این فرمت فایل apk در واقع از فایل AndroidManifest.xml، کد برنامه، فایل های src (منبع) و سایر فایل های مرتبط تشکیل شده است.
از Bundle ها برای ارسال داده های مورد نیاز به قسمت های مختلف برنامه استفاده می شود. کد زیر نحوه انتقال یک قطعه داده با استفاده از Bundle را نشان می دهد:
Bundle b=new Bundle();
b.putString("Email","abc@xyz.com");
intent.putExtras(b);
این سوال از من پرسیده شده است  + 
یک آداپتور در اندروید بهعنوان پلی بین AdapterView و دادههای یک View عمل میکند. آداپتور دادهها را میگیرد و به AdapterView میفرستد، View نیز میتواند دادهها را از AdapterView بگیرد و دادهها را در قالب مولفه های مختلفی از View مانند spinner ،list view ،grid view و غیره نشان دهد.
ویجت ها به کاربران این امکان را می دهند تا با یک برنامه اندرویدی تعامل داشته باشند. در یک صفحه برنامه انواع مختلفی از ویجت ها مانند Buttonها و TextViewها وجود دارد.
View یک جز اصلی و پایه ای از رابط کاربری است و یک کادر مستطیلی کوچک است که به ورودی های کاربر پاسخ می دهد. View کلاس پایه برای تمام ویجت های رابط کاربری است. نمونه های View عبارتند از: TextView EditText Button Image Button Date Picker RadioButton CheckBox buttons Image View
ViewGroup یک محفظه نامرئی است که تمام Viewها در آن قرار می گیرند.در واقع ViewGroup کلاس پایه برای تمامی Layoutهاست که Viewها را در خود نگه میدارد و ویژگیهای آنها را تعیین میکند. اگر بخواهیم در مورد کلاس ViewGroup مثالی بزنیم، می توان آنها را به صورت زیر فهرست کرد: LinearLayout RelativeLayout FrameLayout TableLayout CoordinatorLayout ConstraintLayout
استفاده از Layoutهای مبتنی بر XML ابزاری سازگار و تا حدودی استاندارد برای تنظیم قالب و تعریف رابط کاربری گرافیکی فراهم میکند. در عمل، جزئیات یک Layout در فایل های XML قرار می گیرد در حالی که موارد دیگر در resource فایل ها قرار می گیرند.
یک Fragment یک بخش قابل استفاده مجدد از رابط کاربری است که چیدمان خاص خود را دراد و می تواند رویدادهای(ٍEvent) ورودی خود را مدیریت کند. یک Fragment به تنهایی نمی تواند زندگی کند و باید توسط یک Activity یا Fragment دیگر میزبانی شود. توجه کنید که شما می توانید چند Fragment را در یک Activity واحد ترکیب کنید یا اینکه یک Fragment را در چندین Activity استفاده کنید. چرخه حیات Fragment ارتباط نزدیکی با چرخه حیات Activity میزبان آن دارد، به این معنی که وقتی Activity متوقف می شود، تمام Fragmentهای موجود در Activity نیز متوقف می شوند. شما میتوانید با گسترش کلاس Fragment، یک Fragment جدید ایجاد کنید و Layout مربوط به آن را در قالب یک فایل xml با چیدمان موردنظرتان به برنامه اضافه کنید. برای استفاده از آن کافیست تگ <fragment> را در فایل Layout یک Activity وارد کنید.
در اندروید پوشه drawable ، مجموعه ای از آیتم های بصری است که می توانند به عنوان پس زمینه، بنر، آیکون، صفحه نمایش اسپلش(ُSplash Screen) و غیره استفاده شوند.
به عناصر View می توان با استفاده از کلمه کلیدی findViewById دسترسی پیدا کرد.
یک Android Toast بازخوردی و یا پیامی را در مورد وضعیت عملیات آغاز شده توسط کاربر یا نتیجه عملیات به کاربر نمایش می دهد.
Containerها، همانطور که از نامشان پیداست، بسته به اینکه کدام آیتم های خاص مورد نیاز است و در چه ترتیب خاصی مورد نظر است، اشیا و ویجت ها را در کنار هم نگه می دارند. یک Container ممکن است برچسب ها(Labels)، فیلدها، دکمه ها(Buttons) یا حتی Containerهای دیگر را در خود جای دهد.
Orientation تعیین می کند که آیتم های داخل LinearLayout به صورت سطری یا ستونی نمایش داده شود.
Content Providerها می توانند به برنامه کمک کنند تا دسترسی به داده های ذخیره شده توسط خودش و همچنین ذخیره شده توسط برنامه های دیگر را مدیریت کند و راهی برای اشتراک گذاری داده ها با برنامه های دیگر ارائه دهد. آنها داده ها را کپسوله می کنند و مکانیسم هایی را برای تعریف امنیت داده ها فراهم می کنند.
اندروید چندین گزینه برای ذخیره داده های برنامه در اختیار شما قرار می دهد. راه حلی که انتخاب میکنید به نیازهای خاص شما بستگی دارد، از جمله اینکه دادههای شما به چه مقدار فضای نیاز دارد، چه نوع دادههایی را باید ذخیره کنید، و اینکه آیا دادهها باید برای برنامه شما خصوصی باشند یا برای سایر برنامهها و کاربر قابل دسترسی باشند. انواع فضاهای ذخیره سازی ارائه شده توسط اندروید به صورت زیر است: - Internal Storage: برای ذخیره فایل های خصوصی برنامه در سیستم فایل دستگاه استفاده میشود. به طور پیشفرض، فایلهای ذخیرهشده در حافظه داخلی برای برنامه شما خصوصی هستند و سایر برنامهها نمیتوانند به آنها دسترسی داشته باشند. - External Storage: هر دستگاه اندرویدی از فضای مشترکی به نام حافظه خارجی پشتیبانی میکند که میتوانید از آن برای ذخیره فایلها استفاده کنید. در واقع یک فضای ذخیرهسازی است که کاربران میتوانند آن را به عنوان یک دستگاه ذخیرهسازی خارجی روی دستگاه نصب کنند و حتی ممکن است از نظر فیزیکی قابل جابجایی باشد (مانند کارت SD). فایلهای ذخیرهشده در حافظه خارجی قابل خواندن و تغییر هستند. - SQLite Databases: اندروید از پایگاه داده های SQLite برای ذخیره داده های ساخت یافته پشتیبانی کامل می کند. هر پایگاه داده ای که ایجاد می کنید فقط توسط برنامه شما قابل دسترسی است - Shared Preferences: اگر نیازی به ذخیره داده های زیادی ندارید و نیازی به ساختار ندارید، باید از SharedPreferences استفاده کنید. این API به شما این امکان را میدهد که جفتهای کلید-مقدار از انواع دادههای اولیه مانند boolean، float، int، long و string را بخوانید و بنویسید.
SQLite یک پایگاه داده رابطه ای متن باز و سبک برای دستگاه های تلفن همراه است که برای انجام عملیات پایگاه داده در دستگاه های اندرویدی مانند ذخیره، دستکاری یا بازیابی داده های پایدار از پایگاه داده استفاده می شود. این پایگاه داده به صورت پیش فرض در اندروید تعبیه شده است. بنابراین، نیازی به انجام هیچ گونه کار راه اندازی پایگاه داده یا مدیریت آن نیست.
NDK مخفف Native Development Kit است. با استفاده از NDK، می توانید بخشی از یک برنامه را با استفاده از زبان دیگری مانند ++C/C توسعه دهید تا عملکرد برنامه را بهبود دهید.
AAPT مخفف Android Asset Packaging Tool است. این ابزار توانایی استفاده از آرشیوهای سازگار با zip را در اختیار توسعه دهندگان قرار می دهد که شامل ایجاد، استخراج و همچنین مشاهده محتویات آن می شود.
Android Debug Bridge یک ابزار خط فرمان است که برای برقراری و کنترل ارتباط با یک شبیه ساز استفاده می شود. این ابزار این قدرت را به توسعه دهندگان می دهد تا دستورات shell را از راه دور برای اجرای برنامه ها روی شبیه ساز اجرا کنند.
ANR مخفف عبارت Application Not Responsing است. این در واقع یک پیغام است که هر زمان که برنامه ای برای مدت طولانی پاسخگو نبود ظاهر می شود.
- Alert Dialog : AlertDialog شامل 0 تا 3 دکمه(Button) به همراه فهرستی از موارد قابل انتخاب مانند چک باکس ها و دکمه های رادیویی(Radio Button) می باشد. معمولا زمانی استفاده میشود که برای مثال از کاربر بخواهید در پاسخ به یک اقدام خاص بین بله یا خیر و یا باقی ماندن در یک صفحه یا خارج شدن از آن تصمیم بگیرد. - Progress Dialog: یک افزونه(Extension) از AlertDialog است و برای نمایش میزان پیشرفت استفاده می شود. همچنین از دکمه ها نیز پشتیبانی می کند. این کلاس در سطح 26 API منسوخ شد زیرا مانع از تعامل کاربر با برنامه می شود. به جای این کلاس می توانیم از یک شاخص پیشرفت دیگری مانند ProgressBar استفاده کنیم که می تواند در رابط کاربری برنامه شما تعبیه شود. - Date Picker Dialog: برای انتخاب تاریخ استفاده میشود. - Time picker Dialog: برای انتخاب زمان استفاده میشود.
Inflate Exception Surface.OutOfResourceException SurfaceHolder.BadSurfaceTypeException WindowManager.BadTokenException
به طور کلی، یک تصویر Nine-patch امکان تغییر اندازه را می دهد که می توانید از آن تصویر به عنوان پس زمینه یا سایر موارد مورد نیاز برای دستگاه مورد نظر استفاده کنید. Nine-patch به روشی اشاره دارد که می توانید اندازه تصویر را تغییر دهید شامل 4 گوشه بدون مقیاس، 4 لبه که در 1 محور مقیاس بندی شده اند، و لبه میانی که می تواند در هر دو محور مقیاس بندی شود.
دستگاههای مبتنی بر اندروید دارای مجموعهای از حسگرهای داخلی هستند که پارامترهای خاصی مانند حرکت، جهتگیری و بسیاری موارد دیگر را با دقت بالا اندازهگیری میکنند. حسگرها بر اساس طبیعت می توانند هم سخت افزاری و هم نرم افزاری باشند. سه دسته برجسته از سنسورها در دستگاه های اندرویدی وجود دارد. آن ها هستند: - سنسور موقعیت: برای اندازه گیری موقعیت فیزیکی دستگاه اندرویدی استفاده می شود که دارای سنسورهای جهت یابی و مغناطیس سنج است. - سنسورهای حرکتی: این سنسورها از سنسورهای جاذبه، فعالیت چرخشی و شتاب تشکیل شده اند که چرخش دستگاه یا شتاب و غیره را اندازه گیری می کنند. - سنسور محیطی: شامل سنسورهایی است که دما، رطوبت، فشار و سایر عوامل محیطی را اندازه گیری می کند.
هات اسپات وای فای قابل حمل برای اشتراک گذاری اتصال اینترنت با سایر دستگاه های بی سیم استفاده می شود. به عنوان مثال می توانید برای اتصال لپ تاپ خود به اینترنت از تلفن مجهز به اندروید خود به عنوان یک هات اسپات وای فای استفاده کنید.
کلاس سینگلتون کلاسی است که تنها می توان یک شی از آن ایجاد کرد که توسط سایر کلاس ها به اشتراک گذاشته شود.
سوالی هست که اینجا نمیبینیش و از نظر تو مهمه؟ خودت سوالی داری که دنبال جوابشی؟ جواب بهتری واسه یکی از سوالای بالا داری؟ پس واسمون بفرست.