Duration 40:25
16+
Play
Video

Protips: a fresh look at advanced topics for Android experts

Reto Meier
Developer Advocate at Google
  • Video
  • Table of contents
  • Video
2018 Google I/O
May 8, 2018, Mountain View, USA
2018 Google I/O
Video
Protips: a fresh look at advanced topics for Android experts
Available
In cart
Free
Free
Free
Free
Free
Free
Add to favorites
46.45 K
I like 0
I dislike 0
Available
In cart
Free
Free
Free
Free
Free
Free
  • Description
  • Transcript
  • Discussion

About speaker

Reto Meier
Developer Advocate at Google

Reto Meier has been helping Android developers create the best applications possible for their users since the initial Android release in 2007. Reto is an experienced software developer with more than 20 years experience in application design and development, who has spent 10 years as a developer advocate at Google, contributing countless articles, online training, conference talks, and YouTube videos to the developer community.

View the profile

About the talk

It's been 10 years since the first Android device launch, and even experienced Android developers are still using tools, APIs, and best-practices from 2008. The return of Android Protips brings you up-to-speed on modern solutions to Android development challenges, highlights cutting-edge features, and calls out deprecated app design / implementation patterns. These protips will bring your skills into the next decade of Android development.

Share

Good morning, everyone. My name is red Amaya on the developer Advocate Kira Google Now technically, I'm a DA on the Google Cloud jebril sing. So if baby bump into my boss or really anyone from the Google Cloud team, and they all asked how the presentation went. If you could tell them that I presented how to build a cloud back-end for your mobile app. That would really help me out. Now what I am presenting is hopefully what everyone is here to see is Android Pro tips a fresh look at expert advice for advanced Android developers as the title suggests. This

will be a very technical talk that will be a lot of kind if you're not comfortable with code or if you came to hopefully see the Grateful Dead you were in the wrong place. They're also about 20 is like. Not just to get a feel for her to make sure we do have the right people in the audience. How many of you developing for Android right now? We not now now but like I like ice mandroid curious folks. He has some deadheads in the wrong place and time think there's some folks up on the bank is working on that tan and that's cool to everyone's welcome. Thank you

for coming. This is actually a pretty special year for Android. This marks the 10-year anniversary of Android development super exciting. Obviously not everyone's been developing on Android for quite that long. I haven't even developing more than 2 years almost 5 years. She has done what about the penius? We have any ten-year veterans a few nice. Congratulations to the 10 years. I think I too have that honor that privilege of having been developing for Android for 10 years. I even brought receipts. This is my very first

question on stackoverflow asking about the maps API for the point nine PTSD K, which those hands full of Tamia veterans will hopefully remember maybe hopefully not remember I'm curious and this will be the last question. I asked for a little while at least how many of you have been to a previous iOS and seen one of my previous purchase sessions. All right. Now you still came to this. That's that's reassuring. Thank you that the last couple of months sessions wanted to gain some inspiration. You know, like what are the cool things? We used to talk about in a game for the excitement from the

early days of Android, but I quickly realized that not everything that I had said in his early days has held up all that well, As a result what I'm actually going to be presenting this year is looking at all the things that we said in previous years and Flatbush a session is actually Android Pro tips fixed. Sorry. The goal here is to provide you with all the tips and tricks and best practices and good advice is going to help us develop great apps for the

next decade of Android development in order to do that effectively. I want you to take the same Journey as me. So we're going to start by going back in time. Going to go back through previous Google iOS previous purchase sessions all the way back to the very very beginning. Have you may have gone too far back? This is me and kindergarten happy child. Don't know what a fragment is, and I've never heard of a content provider. That will change also side

note. I didn't know I was presenting the amphitheater and that there would be a 400 foot screen if I had known that I may have included a few a pictures of myself. Take note if you're ever in this situation clearly with to thaw back. So let's just bump it a few years for what I think I can do that with one of these buttons have a look. Yes, then I'll look young. This is his 2018. I remember this is actually the cover photos of my first Android phone and we took this photo just after I got in the first round of adenoids back from the first drop

and the next day and rage release the 1.0 SDK and up until then I'd be riding face in the point 9 theater and I knew what was coming. You know, how much is going to change at 1.00 4.9.8. 2.9 was pretty - so it should just be a couple of little things. Spent a lot can change. Like really a lot. I've actually written an entire chapter on the g12. Write the I wish it was pretty cool, but it did not exist in the 1.0 SDK black. I didn't remove it. I ended up leaving it in the book Because by the time it came out and

put back in and eventually removed it from future visions of the book. Anyway, the reason I mention this is because he is going around on the best way of doing things that are the latest and greatest API so you can take advantage of to build great night and I do this with the knowledge that sometimes within months even weeks and these things are going to change. I got to be replaced with something more efficient more comprehensive in effect weeks and months is the best case scenario. I remember one

particular incident. I had just finished a canine very exciting people develop a day in Prague. I think it was what's new in cupcake. I've been doing this for a while and I stepped off stage and just as my foot hit the ground we released are not. So in that instance. I had about three Sutton nanoseconds of being a parent before everything I said was effectively outdated. Now this fight how old of that may sound this is actually really a good thing will see you now not so much to me but it's a good thing. This is demonstrates how quickly Android is evolving to take

advantage of what what to give users and developers the things that they need to be able to be successful. There's always been a trade-off and I know you will have felt this pain with new platform comes out like the eyes bright new functionality take advantage of but you know, it's going to take a while before lots of users are on that platform and at the same time, you know, some of the older platforms going to take a few years before they go away. So you have to do this trade-off. Is it worth putting in the time and effort to take advantage of the UAB ICU functionality knowing that it's

going to have to be backwards compatible and you can have to maintain that could potentially if he is so when do you do that? well the thing is What way is what makes us really excited is that now? We have jetpack, right which incorporates all of the Android support Library Android architecture components and if you take jetpack and we end up with an increasing surface area of apis, which don't rely on having the lightest platform version so you can take advantage of the new functionality that's available and we'll take care of riding elephant

boilerplate code to make it backwards compatible for you. So, this is a nice Advantage, right? Suddenly that trade-off isn't quite as expensive now. It's still one of the big pluses of this as well. We no longer tied to the frame. I tried so we can continue to launch a new features fix Boggs encapsulate mold best practices. Take care of more edge cases. We can do all of this in between platform releases, which is right to develop is not so awesome for those of us trying to talk about it. Thanks change more rapidly. But there's a price right if you want to take advantage of this cool new

stuff. You just have to reconsider some of the fundamental architectural choices and how we build a lass. And so I'm going to talk today a little bit about why I think now is the right time to do that. If we if we bring it down to its real fundamentals. What would you want to do is keep a lap looking fresh lightweight full of potential. If not, we quickly risk becoming visibly older outdated. Little bloated maybe how to maintain. How did it manage? And this is an

analogy for high cholesterol, but I couldn't I couldn't figure it out. You get the idea right before we do need to update. I did want to spend just a little bit of time highlighting a handful of proteins which has stood the test of time that like a fine wine or a sharp cheddar actually age pretty well. Probably more than just the ones on this list, but this is the highlights and and what you noticed about these particular protips is that they don't really specific to Android. They're not even really

specific a mobile development. This is just good best practice that you should always be keeping in mind when building any engineering app What's up? Well too much on the things that we know are still good ideas. Let's take a look at some of the things which have changed which is perhaps not aged quite as well. Now everything on this list, you can pretty much still do but it's old being replaced with you or API for the more efficient that encapsulate a bigger amount of functionality. Sometimes the underlying Hardware change the UI bear. Paradigm has changed but a

lot of it you can still do. And that's actually kind of a theme for a little the things that we going to be looking at. It has always being ways of achieving certain things but is now significantly better ways simple ways which involves less cold less hockey work around making a more predictable and easy for you to maintain and manage your face is going forward. So we know things have changed I said that a few times but this certain things we've always been able to rely on right you right your Android code in Java language syntax and all of the application components are basically

the same and we use the same coil components that can track the same way. They achieve the same and results and that's how they would be able to rely on until basically until now lost eurosur things have fundamentally changed Android Studio 3 in Scotland as a first-class language for Android development, and that's actually what we're encouraging people to use as their primary development language for Android. We saw the introduction of Android architecture components which introduced viewmodels live data and the room. Advice to significantly

simplify the way that we manage data and have it interact properly with the activity lifecycle. We also have the job scheduler which almost entirely eliminates the need to create your own custom background services. And the antenna receive is that we sometimes set up to monitor device to control when Elsa versus a run which is a good thing because an Android I we actually deprecated the ability to have long-running background Services when you laugh is in the background as well and at the same time most to be in 10 receivers that you may have used to monitor device State

have also largely been deprecated. Another good thing of course things move quickly jump schedule at already deprecated as of yesterday morning. So now we have work manager, which is nice cuz it does the same stuff as drug schedule, but it's backwards compatible on right so you starting to see some of the trends of what we trying to achieve here. We should take into some of this stuff in a little bit more detail something. We should have talked about it. Most of these purchased sessions was the first thing I talked about it and then comes up every year. I like to to focus on what's

happening. What's happening in the background? Sometimes it's easy to miss until you really focus on it back in 20 2010 recession post. Android session is very exciting. And this is the first part it so I thought I'd take longer than just a fraction of a second and interrupt the US play the moving into a background threat since the number of ways you can do that the most simplest of cost to use Java threading Android. Is it cold at a sync tasks? Hey, you

know what? They say the giant screen actually removed 20 lb Kind of shirt right like kind of like we don't want to block the UI thread. What's the context around? What I was talking about was trying to eliminate these application not responding dialog switch have evolved over the years. They look a little bit different now that they used to be very common because it was easy to block the full ground thread, right? If you try to do a data transfer for example of blocking and that would be bad experience and so for Android 3.0

we introduced the runtime exception. So if you try to access the internet through it runtime exception the app with crash strong encouragement for develop is to not do that more recently. We've done similar things with file system access with database access as well. Now we'd Android pay this is no longer a problem because we don't show anti out dialogues. We just crashed the app. So that's not a better outcome fuel uses, but it's a much stronger signal to developers that we need to make sure that we're taking care of this particular problem. Now, I did mention one solution and it got

some I got some lousy at the old async task. It's a reasonable solution to the state of problem. We need to move everything off the back of a full-grown for background thread and that's what a Cintas does creates background thread and it has these two handles which cold go back to the UI thread so you can update me why when you've got progress or final result to display. I would like to tell you that the only thing missing from that is that now you have to write it in kotlin. It's better. Cotton looks nice and it's really more concise. But you still

have the same fundamental problems where if you're doing this stuff within an activity if the user rotates the phone. It's all going to go wrong is going to be get killed racing task. And that's kind of the best case scenario. You may leak context. You may try to update auy element that just doesn't exist or is in the process of getting killed and recreated. It's problematic now back in that first session. I had a solution for this was a great solution. The advice was you should move it to a service. Which Spanish say this advice has not aged spectacularly. Well,

the general principle is is still pretty reasonable. Right? It's like you have something long-running. So you're already using intent to self service probably in intensive us and that goes and tells the time-consuming wife. Maybe it's really coming down from several interacting with the dollar to peso performing some conflicts calculation. I'm going to finish the tent in a tent back to the activity and Ethan update cui accordingly basic stuff in it. So it's a reasonable approach but it doesn't introduce some new challenges services are heavyweight components, right? We don't really

want to create then we want to kill him as quickly as possible to gain back some of our system resources and they keep running even when your activity isn't which is kind of a point, but now you have to keep in mind your activity lifecycle. What's it doing? Have you actually exist at the app have you transition to a new activity should the service keep running? Should it be cancelled? Stuff you need to keep in mind and it's doable. It's just a lot of work to get right. and of course because service is right of the high-priority it actually prevents the system from killing your app to gain

results as if it needs to and there's no guarantee that you said this will actually keep running if your app is force quit There's another problem which is an Android are you can't guarantee that your background services will be running when you want them to Yukon stata background service when your app is in the background from a broadcast receiver and they will be killed after a few minutes, even if they were initiated while your activity was in the foreground. Really time-consuming things which you need to have run. This is still a reasonable approach.

You have an activity uses a service to then download from server science night time consuming operation. And then that saves it to adopt a base and then your activity this morning just the. Of a so it's kind of a one-way flow which is nice but there is a catch there's always a catch and the catch is that this is not an efficient way to use the cell radio and back in 2012. Am not going to go into too much detail that I had this whole spiel about how to sell radio and every time you do a transfer or tents on the radio, it stays in a standby state which draws more power and the goal

is that it reduces latency for future transfer us. That's all right. And the reason it's important for us to know is that if you're doing well to transfer as you can keep the radio turned on its going to drop out more quickly. So we have some specific advice for this which was you should deal with that. You know how it works now efficiencies important. So fix it. I had this whole metaphor to help it was about cookies to have a friend who's an artist loses an excuse to get him to draw things at the idea. He was used to be big cookie model Leo minimizing the

total number of transfers that you're using across the app lifecycle. So if you have something that's not time-sensitive analytics you cute white. Next time. Is it in user-initiated refresh you send all of the Hue. You'll see look into the future to see is there anything which is going to be scheduled to happen in a few minutes and let you through that first. So I was a way to manually batch and bundle of your transfer so that they happen at the same time and you get some increased efficiency. As I'm sure you can believe doing all of this and understanding how to do it

right was complicated enough but a room full of engine is much like yourselves back at Moscone believe that this was a legitimate equation. You needed to solve in order to figure out how to do this. Right? It's not this is just made up by 2012. We had a solution a solution which was a sink adapter to a we claimed was pretty straightforward. Which is Pharisee with Ally? Now it's so bad to do it on yourself. And once you set it up if it's not that complicated, right you're able to the trigger one offer periodic

transfer and a sink adapter will handle all of the background doing the patching in time shifting full X or request that happened with an SOS time window. So you don't have to think about when you trigger you just do an and Trust the sink adapter to handle on a FOID unfortunately to make this all work you needed to have a sink adapter fair enough sink adapter runs within its own service. Of course, you also need to have an account manager isn't used but it's part of the API in the account authenticator also need to print syllabus to run in. Okay, I'm seeing a trend you

also need to have a content provider again doesn't need to be used but needs to exist you do all of this right at holding Java and then is maybe a dozen XML files you need to ride as well Plus in manifest changes, and then you could to go to sink adapter. What's Spanish say that a lot of people trying to make this work? Found it to be kind of frustrating? And of course it only batched and bundles your app your transfers within your an app, which is why 2015 great year Android 5, we introduced the job scheduler at the I have been replaced

schedule works at the platform level. So it doesn't batching in bumbling fool all the apps at the same time to be able to take advantage know just to settle radio battery improvements, but all the results improvements that were trying to do things like Stand By and throw his mode of this. Weed in your at you create a new job service that does the asynchronous background updates. In this case. We using the icing task which we can use now cuz we don't have the same memory leak problems. And then I was in your specific activity you just Define the criteria that you need in order for that

job to be successfully executed if it needs to be on the internet needs recharging etcetera, how urgent is it? What is your perfect timing is a periodical about sort of stuff and the job schedule then handle all of the background work for you in the most efficient way possible. The only thing which would be better than a job schedule work in a backwards compatible. Why which is why we launched what manager of Jetpack and you welcome and that is where you are defining the background work that needs to be done and then within your

activity you do the same thing you specify the constraints that need to be met before this world can be accomplished and then what Manager will handle all of this for you in the background same as job schedule, but it now also encapsulates the best practice solution for earlier platform releases. I think it goes back to full point for several years the latest and greatest job scheduler. If you running on the latest platform all the way back to probably alarm manager for some of the earliest platform releases and again, you don't need to write any of that boy look like coats backwards

compatibility. We do all of that for you. You don't have to maintain its find a box when the edge cases you can rely on with manager to take care of that. And of course this is going to continue to improve jump schedule. It continues to improve on the platform with manager is going to be able to evolve take advantage of some of those changes. I even want to know about work manager and a stage 2 today at 5:30. I recommend going along. It's it's a really cool new Abi. What's manager? It's great. If it's something which is genuinely time-consuming and it needs to be

initiated on the client side. Now one of the things which we've always said it was really hasn't changed. Is that wherever possible we should eliminate periodic refreshes and any updates that need to happen based on changes on the other side should be initiated by the server. Preferably using Google Cloud messaging by which I mean a flat base Cloud messaging because GCM was deprecated in April things move quickly takes advantage of the same scalable reliable GCM infrastructure, that would be using the past but also improves

delivery reporting and reliability it also as a web console so you can send notifications to your apps without having to have your info for instance. now the transfers this gives us a pretty good solution, but there's really no way that this is a viable solution for being able to maintain a small amount of data whenever the phone rotates that matter using a Singleton's or overriding application plus which I may or may not have said in previous years is a simile So which is

why in Android 3.0 we introduce headless fragments and Lotus. She never wants to Millie with both of these. Fragments were designed to break uui up into chunks that will independent reusable and interchangeable and the key he was also aware of the parent parent activity lifecycle not the trick with handles fragments was that they didn't have a you want so you can configure them to be retained across an activity restart based on a configuration change. This is really nice because it meant now we have somewhere to store out. Immortal is

independent of the activity being recreated every time the configuration changes. But the vanishing fragments was tricky and if you attended the first Android session this morning, yeah, you see just how tricky it was you can add and remove fragments from any activity. You can have multiple instances of the same fragment within the same activity defragment transactions are all done asynchronously. So you can't guarantee when something is there and this was great that you were able to achieve what you wanted but it was it was complicated to make this old work

now loading loading was better. What is made it easier to a synchronous asynchronous Lee load data with annual fragments and activities and then you could observe and react to changes in the Lota within the activity based on whenever the underlined daughter changed and in most cases you had to handle all of that plumbing yourself. It's meant you needed to load the data for my restored you needed to then observe changes within that underlying gotta and Bubble Up back up through the lawyer so that you can have a simple code in your activity. Which was LSU's crisalida not Coastal. It was

great because it did most of the work for you. You initialize the letter within the activity or fragment at creation time. And then you just feel being a number pull backs to create a new Costa and then to receive the results of that. You can update the UI accordingly Housing Authority of the content provided that you want a query in the SQL statement that you want to use to get back here results, or they get splashed into a Content resolver rescue content provider and get you back at cursor that you can then used to update you. Why But

by definition that meant that you needed to make your daughter available wire content provider. And content providers are actually know what I'm going to come back to contact providers. I'm just going to leave them there for a moment. I got to take a step back and we go ahead loose fragments in Lotus and technically that enables us to do everything that we need to do this a problem though. It's really hard to get them to work together understand how to make them look across multiple activities in fragments in the various different implementations of thought it was

frustrating which is why we're all so excited to see Android architecture components Android architecture components introduced viewmodels live dada and the room. Of ice and it's all effectively replaces fragments and play. This is a simple way to separate your UI and you or you wipe data if you want to look self is actually really simple to create a you start with a property that stores the data that you want to expose in Disguise for using a mutable live daughter is my daughter's school. And then you expose a method which is

going to return that property. So the first time it's going to populate that property and then from then on it will return that cached version. Then you have a method which dolls that population and again, this is Don asynchronously in this case again, we using our old friend is a synchronous tosk then whatever the value of your beautiful live data changes that he's going to trigger any observers that you have attached to it. So I'm back in your activity will you need to do is request the view models ask for the specific viewmodel place that you've just created and then cold. View

models. Access method which will populate the dada and return it. Either way. You observe it to that and then your ass is going to get cold. But the first time you attach The Observer and an anytime the underlying live data changes Not the beauty of you Mortals if they survive activity restart, so we don't have to deal with with with that particular scenario and beauty of live Dada is that it understands the activity lifecycle. Sorry. The first time the app is wrong. You'll viewmodel gets created populates the live data from the underlined Autosource

sends the results back by the observe Handler within your activity and then if someone wear tights that phone the activity gets destroyed gets recreated with the existing viewmodel has returned the existing live daughter has returned why the needs of hand and it's treated with the latest version of a daughter with her to being updated or not in the interim. In fact live. It's really smart because it only sends updates by the observe Handler when the activity is active cuz you don't need to update the activity if that you why isn't actually visible and if there is new, it's always

a reason your daughter will white and then transfer once the activity becomes active. Does the total result all we do is we feel less like this and much more like this. You just always Argo. Call Tim privatus. I promised I'd come back to content providers and some contacts and this is what happened. This is the number of students enrolled in each of the lessons of our Android Udacity class. And as you can see the highlight of columns of when we get to content providers and Lotus she get the impression. This is something that people find a little

frustrating we've improved since then it's it's not quite so Grim now and some of what we can talk about now actually explains some of the reasons. Why is it so frustrating? This is the boilerplate code for creating a simple content provider. I'm sure many of you feel something like this, but in truth, it's really just the first couple of messages because I want for a little while and I'll keep in mind this isn't doing anything cuz he can leave specialist just passing content resolve request straight through to a sequel I thought of Base Lvc, that's just a content provider. Then you

need to create a contract that defines the column names that you want to use to be able to interact with it. Then of course, you need to create your own sql-like open helper, which is how you create update an access the underlined a device operates on Chris's which is probably not what you're using in your you want so you'll need to create a class represent the records in the database. She's nice. It's actually quite simple and caught one. But you also need code to convert between those class objects and Counting values to add rows to your tables and you need to be able to convert between

coasters at least your place objects somewhere along the line. You need to set up a bunch of observance of it at the bottom. Of exchanges, you'll list of objects also gets updated. A lot of card or something. We should be relatively straightforward. Is there anyone here who gets paid per line of code? Okay, sir. If there is then you just too shy that old method actually works really well stick with that for the rest of us. This is where the room. Advice really comes into a sign. So spotify Android architecture components

now part of Jetpack, and we need to do is you stop with the cloth definition Define to call him that you want within your class and you just add an annotation to say this is an interview that I want to use it. Of base and this is the primary key for this table. Then you create a new room. Advice which includes each of the tables that you want to have within that. A base and you return an instance of the data access object. And that is the place where you specify all of your database interactions you're in so it's too late some updates in your queries as many of them as you want in as

many different styles as you want. You'll notice that the the queries he returned life. And that's really cool because if you are storing, uuy Dada in your view model, which obviously you are cuz that's the right way to do things. Now, it actually simplifies that new view models significantly you just request access to the room. A basis access object executes the query which returns live daughter itself. Then you just passed that lived out of right right back through to any activity or fragment with your quest sit back in the activity. It works the same way. You felt the same observe

Handler getting the same live data representing a collection of objects and you can use that to update the you want whenever the underlined out of phase changes. She's got the same outcome that you did before but 10 times less boilerplate code 10 times less code that you have to maintain an ulcer. If you change a column name beforehand. It was a lot of places that could go wrong. Now you smart ass. Know if you combine that with the work manager you actually get a really clean solution to this whole process right the work manager download starter from a server updates the

room. Abase accordingly, which then sends the live. If the viewmodel within the activity and fragment will fragment that you want to use We Stand by the eaves of Handler updates that you want. If you're not one of the lucky folks who is still getting paid by line of code. This is probably a better solution. Speaking of better Solutions. Well, so we got I wanted to talk a little bit about Android location services because this is again the topic that I spent a lot of time talking about be able to find a current position and put it on the map somewhere is

something that's being part of Android since the very first beta SDK. I'm so by 2011. Actually managed to amass a quite a collection of pro tips to how to take advantage of the location manager in the most efficient and effective way possible. That was a big Topic in a couple of my Android Pro tips talks. So I went to the location team that I built a project which encapsulate Soul about this practice is all of the things which we tell people to do and it's fair to say that they were impressed by which I mean it really left an impression. They they didn't win a way in

which is fixed everything and so it beforehand I had all these classes and interfaces they went away and gave me an API. As part of the fuse location manatuck fuse location provider. We just sold the magic for you and cats related all those best practices within a small number of simple apis. Tell what's more important battery life will accuracy how often do you want to get results and the fuse location provided goes and tells all of the hard work for you? Now that's it. Thanks for trying to locate an Oreo. We made some changes

new restrictions about how you can receive location updates while your wife is in the background, you know to save battery life and specifically that means that if you are in the background, you only received updates from location manager or the flp a few times an hour. There's a few ways that you can deal with this right you can make it for ground service, which is what we do with the navigation. Another approach is to use geofences. So if those of you who remember the very first version of geofencing on Android with proximity, let's proximity alerts Well that easy enough

to set up specify a lat long radius around a point and they wouldn't Fairly reliable e-trigger if you want to cross that boundary now, the challenge was the way that its chief that was by turning on and leaving on your GPS. So as long as you had a proximity alarm set it would keep the GPS running permanently, which is not what the documentation said, but it is what happened. Luckily the same Google Play services launch which gave us the fuse location provider also gave us a real geofencing API all the functionality that was client claimed from That was claimed to be done with proximity

alerts, but also gave you a few additional improvements most important of which was that it didn't keep the GPS lost permanently on we can take algae offences to the next level with you witnessed a pure language as additional context signals, which allow us to make a more complicated fences specifically we can add date and time for chlamydia to beacons user activity if they walking cycling driving and device State and you can come by and all those conditions together such as in this example where we have one fence which is triggered. If you drive

within a thousand meters of a given location between 10 and 6. We have a little bit of time left. One thing I learned in 2018 is that there's a new way to I'm sorry, that should be busy new way to control media right now back in the day. I can truly media playback was done with media player. I'm going to go through this pretty quickly. Mainly meant that you had to listen to Media buttons getting clicked. Now, of course, you can control media a bunch of different ways. So we've got a better solution which is X and play. I wish effectively replaces the framework media

players easy to customize and extend again. I'm not going to go through the full details here. I had a couple of slides but I have been speaking to slowly. So I recommend that you go to Mock and Andrews 12 tomorrow morning at 10:30 to get all of the details. Not all of the changes in Android have been included. Some of the biggest changes are actually in the availability of Android expertise back when we started we didn't have slackened Google developer expert we didn't even have sex with a fly. What we did have was Lassie. We had people develop a groups. We had some different people who

spoke at conferences and that's still kind of happens. But the big change now is it with just voices within a much larger develop an ecosystem. There are now lots and lots of people around the world to help each other. This is just a small selection of the 90 Google developer expert specializing in Android and kotlin all around the world is just a small amount of the extended engineering team that we have helping the community. Similarly. We put Android conferences all around the world. This is a small selection of some of the Android events. The people I pointed out to me on Twitter a couple

of weeks ago when I asked what the best conferences to go to war. Because really the biggest tip that I can give you is that much more than changes in the tooling will the Frameworks of the apis with jetpack or anyting else much more than that the biggest thing driving Android development for what is the community the people around you the people online World helping each other with Android and it's important because we know that the one thing that doesn't change is that things are going to change so take advantage of things like jetpack to make things simpler work with the people around you and

hopefully you'll apps Will Survive much longer than my Pro tips. Thank you.

Cackle comments for the website

Buy this talk

Access to the talk “Protips: a fresh look at advanced topics for Android experts”
Available
In cart
Free
Free
Free
Free
Free
Free

Access to all the recordings of the event

Get access to all videos “2018 Google I/O”
Available
In cart
Free
Free
Free
Free
Free
Free
Ticket

Interested in topic “Software development”?

You might be interested in videos from this event

September 28, 2018
Moscow
16
159
app store, apps, development, google play, mobile, soft

Similar talks

Robert Kubis
‎Staff Developer Advocate at Google
Available
In cart
Free
Free
Free
Free
Free
Free
Kathy Kam
TPM Manager at Google
+ 2 speakers
Aurimas Liutikas
Señor Software Engineer at Google
+ 2 speakers
Alan Viverette
Software Engineer at Google
+ 2 speakers
Available
In cart
Free
Free
Free
Free
Free
Free
Lukas Bergstrom
Product Manager at Google
+ 1 speaker
Yigit Boyar
Software Engineer at Google
+ 1 speaker
Available
In cart
Free
Free
Free
Free
Free
Free

Buy this video

Video

Access to the talk “Protips: a fresh look at advanced topics for Android experts”
Available
In cart
Free
Free
Free
Free
Free
Free

Conference Cast

With ConferenceCast.tv, you get access to our library of the world's best conference talks.

Conference Cast
558 conferences
22059 speakers
8245 hours of content