title
Android Development Tutorial 2
description
Get the Cheat Sheet Here: http://goo.gl/QJvXz
Best Android Book : http://goo.gl/uPhXFI
In this tutorial, I decided to cover all of the topics I would need, so that in every tutorial that follows I can just make apps. Don't try to memorize everything! Here I'm just covering a bunch of things you need to be familiar with.
We'll cover the lifecycle of an Android activity completely. We'll then look at how to make an app support many languages. We'll look at how to grab string resources and how to pull them into java and xml files. Finally, we'll look at the AndroidManifest.xml file in detail.
detail
{'title': 'Android Development Tutorial 2', 'heatmap': [{'end': 95.975, 'start': 58.043, 'weight': 0.882}, {'end': 165.34, 'start': 147.868, 'weight': 0.8}, {'end': 494.218, 'start': 425.934, 'weight': 0.911}, {'end': 531.036, 'start': 512.777, 'weight': 0.731}], 'summary': 'This android development tutorial part 2 covers the activity life cycle, manifest file, and language support, including a cheat sheet, sets the stage for upcoming tutorials. it also explains the lifecycle of an android activity, highlighting methods like oncreate, onstart, onresume, onpause, onstop, and ondestroyed, to ensure app stability and minimize resource usage, and covers the importance of managing resources and data during each state transition. additionally, it discusses the localization of android apps into multiple languages, providing a comprehensive guide for developers to effectively localize their android apps.', 'chapters': [{'end': 47.251, 'segs': [{'end': 47.251, 'src': 'embed', 'start': 15.603, 'weight': 0, 'content': [{'end': 19.986, 'text': 'the Android manifest file and how to support different languages, and a whole bunch of other different things.', 'start': 15.603, 'duration': 4.383}, {'end': 22.588, 'text': 'But you by no means need to memorize all this stuff.', 'start': 20.206, 'duration': 2.382}, {'end': 28.433, 'text': "In fact, in the description, I'm basically going to provide you With a cheat sheet you're going to be able to copy and paste from and, of course,", 'start': 22.668, 'duration': 5.765}, {'end': 31.896, 'text': 'everything covered here is going to be covered in all the tutorials afterwards.', 'start': 28.433, 'duration': 3.463}, {'end': 39.003, 'text': "I just wanted to cover this all at once so that in parts 3, 4, 5 and so forth and so on we'll be able to just make one app after another.", 'start': 32.296, 'duration': 6.707}, {'end': 45.429, 'text': "So I'll do my best to make it all interesting and if you haven't watched the previous parts of this tutorial I provide a link above to those.", 'start': 39.163, 'duration': 6.266}, {'end': 47.251, 'text': "So I have a lot to do so let's get into it.", 'start': 45.729, 'duration': 1.522}], 'summary': 'Covers android manifest file and language support, with cheat sheet provided. content to be covered in subsequent tutorials.', 'duration': 31.648, 'max_score': 15.603, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM15603.jpg'}], 'start': 0.131, 'title': 'Android development tutorial part 2', 'summary': 'Covers the android activity life cycle, manifest file, language support, and includes a cheat sheet. it sets the stage for upcoming tutorials.', 'chapters': [{'end': 47.251, 'start': 0.131, 'title': 'Android development tutorial part 2', 'summary': 'Covers the android activity life cycle, android manifest file, supporting different languages, and provides a cheat sheet for easy reference, setting the stage for upcoming tutorials.', 'duration': 47.12, 'highlights': ['The chapter covers the Android activity life cycle, Android manifest file, and supporting different languages, setting the stage for upcoming tutorials.', 'A cheat sheet will be provided for easy reference, aiding in memorization of important details.', 'The tutorial series aims to cover a wide range of topics, making it unnecessary to memorize all the information provided.']}], 'duration': 47.12, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM131.jpg', 'highlights': ['The tutorial series aims to cover a wide range of topics, making it unnecessary to memorize all the information provided.', 'A cheat sheet will be provided for easy reference, aiding in memorization of important details.', 'Covers the Android activity life cycle, Android manifest file, and supporting different languages, setting the stage for upcoming tutorials.']}, {'end': 385.986, 'segs': [{'end': 103.943, 'src': 'heatmap', 'start': 58.043, 'weight': 0, 'content': [{'end': 64.072, 'text': 'the Android system constantly calls different methods in an activity that correspond to how the user is interacting with your app.', 'start': 58.043, 'duration': 6.029}, {'end': 69.856, 'text': 'As the app starts, the methods onCreate, onStart, and onResume are going to be called in order.', 'start': 64.331, 'duration': 5.525}, {'end': 78.541, 'text': 'And then once again, whenever your app is shut down, the methods onPause, onStop, and then finally onDestroyed are normally going to be called.', 'start': 70.116, 'duration': 8.425}, {'end': 86.526, 'text': 'And these methods are going to be needed to avoid things like app crashes and, of course, to minimize system resources needs and also, of course,', 'start': 78.741, 'duration': 7.785}, {'end': 88.808, 'text': 'to save data entered into the app by the user.', 'start': 86.526, 'duration': 2.282}, {'end': 95.975, 'text': 'Now aside from resumed, paused, and stopped, every other state documented here is just going to be a temporary state.', 'start': 89.128, 'duration': 6.847}, {'end': 101.421, 'text': 'Resumed, paused, and stopped are going to be states that can occur over an extended period of time, however.', 'start': 96.255, 'duration': 5.166}, {'end': 103.943, 'text': "So we're going to really focus in on them here for a second.", 'start': 101.601, 'duration': 2.342}], 'summary': 'Android system calls methods to manage app lifecycle, including oncreate, onstart, onresume, onpause, onstop, ondestroyed, to avoid crashes, minimize resources, and save user data.', 'duration': 39.612, 'max_score': 58.043, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM58043.jpg'}, {'end': 174.346, 'src': 'heatmap', 'start': 147.868, 'weight': 0.8, 'content': [{'end': 153.472, 'text': "But of course, just like before, you're not going to be able to execute any code for that said activity.", 'start': 147.868, 'duration': 5.604}, {'end': 161.097, 'text': 'So now jumping into the AndroidManifest file, when the user opens up your app, the system calls the onCreate method.', 'start': 153.932, 'duration': 7.165}, {'end': 165.34, 'text': 'And this is an example of the onCreate method, as you can see right here.', 'start': 161.317, 'duration': 4.023}, {'end': 167.802, 'text': 'And this comes from mainActivity.java.', 'start': 165.58, 'duration': 2.222}, {'end': 174.346, 'text': "So whenever the onCreate method is called for the activity that you're going to define in AndroidManifest right here, .", 'start': 168.042, 'duration': 6.304}], 'summary': 'The oncreate method is called when the user opens the app, as shown in mainactivity.java.', 'duration': 26.478, 'max_score': 147.868, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM147868.jpg'}, {'end': 224.687, 'src': 'embed', 'start': 190.241, 'weight': 1, 'content': [{'end': 193.264, 'text': 'or this will be the starting activity for our application.', 'start': 190.241, 'duration': 3.023}, {'end': 198.186, 'text': 'Now, every time an activity is started, the onCreate method is, of course, going to be called,', 'start': 193.504, 'duration': 4.682}, {'end': 205.85, 'text': "and what onCreate is basically going to do is perform basic startup logic that is only done one time over the course of the activity's lifetime.", 'start': 198.186, 'duration': 7.664}, {'end': 212.634, 'text': 'Then again, whenever your activity is being removed from memory, eventually the onDestroy method is going to be called normally.', 'start': 206.01, 'duration': 6.624}, {'end': 215.295, 'text': "I'm going to get into in a second why I keep saying normally.", 'start': 212.814, 'duration': 2.481}, {'end': 224.687, 'text': 'Now the onDestroy method is normally only going to be created if you are using things like threads or you have other long-running resources.', 'start': 215.635, 'duration': 9.052}], 'summary': 'Oncreate performs basic startup logic one time per activity.', 'duration': 34.446, 'max_score': 190.241, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM190241.jpg'}, {'end': 348.284, 'src': 'embed', 'start': 318.161, 'weight': 4, 'content': [{'end': 326.624, 'text': 'And whenever this occurs, whenever you get to the onStop method, what you should do is release all resources that are absolutely not required.', 'start': 318.161, 'duration': 8.463}, {'end': 332.306, 'text': 'And understand, of course, that if an activity is stopped and system resources are required by the system,', 'start': 326.764, 'duration': 5.542}, {'end': 339.594, 'text': 'that the system will very often kill your application, completely often without even calling the onDestroy method.', 'start': 332.466, 'duration': 7.128}, {'end': 348.284, 'text': 'So you should, like I mentioned before, use the onStop method to complete any CPU intensive shutdown operations, saving of data, and so forth.', 'start': 339.814, 'duration': 8.47}], 'summary': 'In onstop method, release resources to prevent system from killing the application without calling ondestroy.', 'duration': 30.123, 'max_score': 318.161, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM318161.jpg'}], 'start': 48.328, 'title': 'Android activity lifecycle', 'summary': 'Explains the lifecycle of an android activity, highlighting methods like oncreate, onstart, onresume, onpause, onstop, and ondestroyed, to ensure app stability and minimize resource usage, and covers the importance of managing resources and data during each state transition.', 'chapters': [{'end': 147.788, 'start': 48.328, 'title': 'Android activity lifecycle', 'summary': 'Explains the lifecycle of an android activity, emphasizing the methods called during app start and shutdown, particularly oncreate, onstart, onresume, onpause, onstop, and ondestroyed, to ensure app stability, minimize system resources usage, and retain user data.', 'duration': 99.46, 'highlights': ['The Android system constantly calls different methods in an activity when the app starts, such as onCreate, onStart, and onResume, and when the app is shut down, methods like onPause, onStop, and onDestroyed are called to avoid app crashes and minimize system resources needs.', 'Resumed, paused, and stopped are states that can occur over an extended period of time, with resumed representing the foreground activity where the user is interacting, paused representing the activity obscured by another activity, and stopped representing the background state where user data is retained.']}, {'end': 385.986, 'start': 147.868, 'title': 'Android activity lifecycle', 'summary': 'Covers the lifecycle of an android activity, including methods like oncreate, ondestroy, onpause, onstop, onrestart, and onstart, and the importance of managing resources and data during each state transition.', 'duration': 238.118, 'highlights': ["The onCreate method in the AndroidManifest file is called when the user opens the app, and it performs basic startup logic that is only done once over the course of the activity's lifetime.", 'The onDestroy method is called when the activity is being removed from memory, and it is essential for handling cleanup, especially for long-running resources like threads.', 'The onPause and onStop methods are crucial for releasing resources and handling cleanup, and the onStop method should release all non-essential resources as the system may kill the application when resources are required.', 'The onRestart method is called when an activity is restarted from a stopped state and is used for restorative work that may be needed, although its use is not very common.', 'Managing resources and data during each state transition is essential for optimizing performance and ensuring a smooth user experience in Android app development.']}], 'duration': 337.658, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM48328.jpg', 'highlights': ['The Android system constantly calls different methods in an activity when the app starts, such as onCreate, onStart, and onResume, and when the app is shut down, methods like onPause, onStop, and onDestroyed are called to avoid app crashes and minimize system resources needs.', "The onCreate method in the AndroidManifest file is called when the user opens the app, and it performs basic startup logic that is only done once over the course of the activity's lifetime.", 'Resumed, paused, and stopped are states that can occur over an extended period of time, with resumed representing the foreground activity where the user is interacting, paused representing the activity obscured by another activity, and stopped representing the background state where user data is retained.', 'The onDestroy method is called when the activity is being removed from memory, and it is essential for handling cleanup, especially for long-running resources like threads.', 'The onPause and onStop methods are crucial for releasing resources and handling cleanup, and the onStop method should release all non-essential resources as the system may kill the application when resources are required.']}, {'end': 1169.194, 'segs': [{'end': 425.554, 'src': 'embed', 'start': 402.666, 'weight': 2, 'content': [{'end': 410.869, 'text': 'Now, if you want to support different languages, basically all you need to do is create additional folders that are going to have a dash after them,', 'start': 402.666, 'duration': 8.203}, {'end': 413.47, 'text': "and then they're going to be followed by a country code.", 'start': 410.869, 'duration': 2.601}, {'end': 417.411, 'text': 'And I just listed a couple of the most common country codes here and down.', 'start': 413.73, 'duration': 3.681}, {'end': 422.073, 'text': 'here is a link to many of the different language codes that are available in the world.', 'start': 417.411, 'duration': 4.662}, {'end': 425.554, 'text': "So rather than me just talking about this, I'm going to show you exactly how to do it.", 'start': 422.293, 'duration': 3.261}], 'summary': 'To support different languages, create folders with country codes and language codes. many language codes available.', 'duration': 22.888, 'max_score': 402.666, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM402666.jpg'}, {'end': 494.218, 'src': 'heatmap', 'start': 425.934, 'weight': 0.911, 'content': [{'end': 433.318, 'text': 'so here we are once again inside of the app that we created last time, and this is what i was referring to strings dot xml.', 'start': 425.934, 'duration': 7.384}, {'end': 437.18, 'text': "now, if we're going to want to cover other different languages, it's actually pretty easy.", 'start': 433.318, 'duration': 3.862}, {'end': 445.108, 'text': "we're just going to go into resource and we're going to come into this guy and go new, create ourselves a new folder, Right like that.", 'start': 437.18, 'duration': 7.928}, {'end': 447.75, 'text': "And then inside of here, we're going to go Values.", 'start': 445.389, 'duration': 2.361}, {'end': 450.832, 'text': "So let's say that I wanted to cover Spanish.", 'start': 447.83, 'duration': 3.002}, {'end': 454.374, 'text': "Well, we're just going to put ES inside of there and hit Finish.", 'start': 451.112, 'duration': 3.262}, {'end': 459.778, 'text': "Then what I'm going to do is open the Strings.xml file, which I actually have it open here already.", 'start': 454.735, 'duration': 5.043}, {'end': 465.562, 'text': "And I'm just going to select everything, copy that, then down in Values.es, again for Spanish.", 'start': 460.058, 'duration': 5.504}, {'end': 472.724, 'text': "we're going to come up, go new, come down here and click file and then inside of this we're just going to go strings.xml.", 'start': 465.782, 'duration': 6.942}, {'end': 477.786, 'text': 'exactly like before and hit finish and then inside of it paste in exactly what we had before.', 'start': 472.724, 'duration': 5.062}, {'end': 478.826, 'text': 'and the only difference is,', 'start': 477.786, 'duration': 1.04}, {'end': 486.589, 'text': "we're going to come in here and change these english words into spanish words and magically i'm just going to come in here and paste that in there and there you go.", 'start': 478.826, 'duration': 7.763}, {'end': 490.21, 'text': "that's all you need to do, and this is automatically going to work for spanish.", 'start': 486.589, 'duration': 3.621}, {'end': 494.218, 'text': 'And of course you could do exactly the same thing for French or whatever.', 'start': 490.495, 'duration': 3.723}], 'summary': 'Creating multilingual support for an app is easy by adding language-specific folders and editing strings.xml file.', 'duration': 68.284, 'max_score': 425.934, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM425934.jpg'}, {'end': 459.778, 'src': 'embed', 'start': 437.18, 'weight': 0, 'content': [{'end': 445.108, 'text': "we're just going to go into resource and we're going to come into this guy and go new, create ourselves a new folder, Right like that.", 'start': 437.18, 'duration': 7.928}, {'end': 447.75, 'text': "And then inside of here, we're going to go Values.", 'start': 445.389, 'duration': 2.361}, {'end': 450.832, 'text': "So let's say that I wanted to cover Spanish.", 'start': 447.83, 'duration': 3.002}, {'end': 454.374, 'text': "Well, we're just going to put ES inside of there and hit Finish.", 'start': 451.112, 'duration': 3.262}, {'end': 459.778, 'text': "Then what I'm going to do is open the Strings.xml file, which I actually have it open here already.", 'start': 454.735, 'duration': 5.043}], 'summary': 'Creating a new folder for spanish language (es) in resource values folder.', 'duration': 22.598, 'max_score': 437.18, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM437180.jpg'}, {'end': 538.74, 'src': 'heatmap', 'start': 512.777, 'weight': 0.731, 'content': [{'end': 518.905, 'text': 'Now, if you want to be able to grab these strings, of course after you have saved them inside of the strings.xml file.', 'start': 512.777, 'duration': 6.128}, {'end': 521.811, 'text': "what we're going to do here is go into main activity right here.", 'start': 518.905, 'duration': 2.906}, {'end': 527.434, 'text': "And you can see right here where I'm actually grabbing that based off of ID.", 'start': 522.171, 'duration': 5.263}, {'end': 531.036, 'text': 'So this is grabbing the edit message string.', 'start': 527.674, 'duration': 3.362}, {'end': 535.358, 'text': 'So if we go into strings.xml, here is edit message.', 'start': 531.376, 'duration': 3.982}, {'end': 538.74, 'text': 'And over here, I am grabbing it using its ID.', 'start': 535.738, 'duration': 3.002}], 'summary': 'Demonstrating how to retrieve strings from strings.xml using ids in main activity.', 'duration': 25.963, 'max_score': 512.777, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM512777.jpg'}, {'end': 677.481, 'src': 'embed', 'start': 646.6, 'weight': 1, 'content': [{'end': 648.421, 'text': "Again, don't try to memorize this.", 'start': 646.6, 'duration': 1.821}, {'end': 654.226, 'text': 'A link in the description has everything I both say as well as I display here on the screen.', 'start': 648.741, 'duration': 5.485}, {'end': 657.148, 'text': "So I'm just going to go through here real quickly and explain what this is.", 'start': 654.506, 'duration': 2.642}, {'end': 659.75, 'text': 'I guess I actually should say exactly what the manifest is.', 'start': 657.368, 'duration': 2.382}, {'end': 667.215, 'text': 'Basically what the androidmanifest.xml file does is it defines requirements, components, and security for your app.', 'start': 659.97, 'duration': 7.245}, {'end': 672.758, 'text': "It also talks about services that the app requires and so forth and so on, but we'll get into that at a later point in time.", 'start': 667.475, 'duration': 5.283}, {'end': 677.481, 'text': "But basically what we're defining here inside of package is just the package name for your app.", 'start': 672.918, 'duration': 4.563}], 'summary': 'The androidmanifest.xml file defines requirements, components, and security for an app.', 'duration': 30.881, 'max_score': 646.6, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM646600.jpg'}, {'end': 1103.381, 'src': 'embed', 'start': 1076.428, 'weight': 4, 'content': [{'end': 1082.23, 'text': 'And that brings us down into the application nodes, which is actually going to be the last thing that I cover here.', 'start': 1076.428, 'duration': 5.802}, {'end': 1089.832, 'text': 'Now there are numerous different attributes that are available using application nodes, and I just have the most common ones listed here.', 'start': 1082.47, 'duration': 7.362}, {'end': 1093.393, 'text': 'I provide a link to a gigantic list of a whole bunch of them underneath.', 'start': 1089.852, 'duration': 3.541}, {'end': 1094.454, 'text': 'in the description.', 'start': 1093.733, 'duration': 0.721}, {'end': 1097.836, 'text': "Basically, I'll just go over these basic guys here right now.", 'start': 1094.814, 'duration': 3.022}, {'end': 1100.098, 'text': 'By marking Allow Backup to True.', 'start': 1098.077, 'duration': 2.021}, {'end': 1103.381, 'text': 'if you so choose to mark Allow Backup to False.', 'start': 1100.098, 'duration': 3.283}], 'summary': 'Covering application nodes with numerous attributes and options for backup settings.', 'duration': 26.953, 'max_score': 1076.428, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM1076428.jpg'}], 'start': 386.837, 'title': 'Multilingual app localization', 'summary': 'Discusses the localization of android apps into multiple languages through the creation of language-specific resource folders, accessing and utilizing resources in xml and java files, and covering key elements of androidmanifest.xml. it aims to provide a comprehensive guide for developers to effectively localize their android apps.', 'chapters': [{'end': 422.073, 'start': 386.837, 'title': 'Supporting different languages', 'summary': 'Discusses supporting different languages by creating additional folders with country codes and using external files like strings.xml, providing a link to various language codes.', 'duration': 35.236, 'highlights': ['Creating additional folders with country codes and using external files like strings.xml to support different languages.', 'Providing a link to various language codes available in the world.']}, {'end': 1169.194, 'start': 422.293, 'title': 'Multilingual app localization', 'summary': 'Explains the process of localizing an android app into multiple languages, demonstrating the creation of language-specific resource folders, and accessing and utilizing these resources in both xml and java files. it also covers the androidmanifest.xml file, explaining its key elements such as defining package name, version code, app version, uses sdk, uses configuration, and uses feature tags, and permissions. the chapter concludes with a brief overview of the support screen tag and application nodes. this resource provides a comprehensive guide for developers to localize their android apps effectively.', 'duration': 746.901, 'highlights': ['The process of localizing an Android app into multiple languages is demonstrated, including the creation of language-specific resource folders and accessing and utilizing these resources in both XML and Java files.', 'Explanation of key elements of the androidmanifest.xml file, such as defining package name, version code, app version, uses SDK, uses configuration, uses feature tags, and permissions, is provided in detail.', 'A brief overview of the support screen tag and application nodes is given as part of the comprehensive guide for developers to effectively localize their Android apps.']}], 'duration': 782.357, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/TgJ5Hho5pAM/pics/TgJ5Hho5pAM386837.jpg', 'highlights': ['Demonstrates localizing Android app into multiple languages with resource folders and accessing resources in XML and Java files.', 'Provides detailed explanation of key elements in androidmanifest.xml file for effective app localization.', 'Creating additional folders with country codes and using external files like strings.xml to support different languages.', 'Provides a link to various language codes available in the world.', 'Gives a brief overview of the support screen tag and application nodes for effective app localization.']}], 'highlights': ['Covers the Android activity life cycle, Android manifest file, and supporting different languages, setting the stage for upcoming tutorials.', 'The Android system constantly calls different methods in an activity when the app starts, such as onCreate, onStart, and onResume, and when the app is shut down, methods like onPause, onStop, and onDestroyed are called to avoid app crashes and minimize system resources needs.', 'Demonstrates localizing Android app into multiple languages with resource folders and accessing resources in XML and Java files.', 'A cheat sheet will be provided for easy reference, aiding in memorization of important details.', 'Provides detailed explanation of key elements in androidmanifest.xml file for effective app localization.', 'The tutorial series aims to cover a wide range of topics, making it unnecessary to memorize all the information provided.', 'Creating additional folders with country codes and using external files like strings.xml to support different languages.', 'Resumed, paused, and stopped are states that can occur over an extended period of time, with resumed representing the foreground activity where the user is interacting, paused representing the activity obscured by another activity, and stopped representing the background state where user data is retained.', "The onCreate method in the AndroidManifest file is called when the user opens the app, and it performs basic startup logic that is only done once over the course of the activity's lifetime.", 'Provides a link to various language codes available in the world.']}