[Music]
hello and welcome to what's new in
Android or as I the only person like to
refer to it as the Android Keynotes I'm
Chad hos from the Android UI toolit team
and I'm Roi for the graphics team uh and
I'm Dan Sandler from the system UI team
uh and we don't have a lot of time so
let's get to it are you ready for what's
new in Android um here's where we left
off last time a 25 so we're just going
to grabb that get Shaw there hop it into
get diff and then all right off we go um
you're going to want to write this
down okay um next yeah that was a good
one okay I love those oh man remember we
almost made that in enum it was
hilarious
um you got that
uh you think this is what people came
for I don't know why we didn't think of
this before um so we we we've been doing
this talk we've been telling you what's
new for for years and you can see
that I forgot my blazer um actually no I
had a lovely red blazer but somebody
borrowed it for the keynote uh you've
got your um it looks like you're messing
me um and but this year was a little
different right you you had uh developer
previews well in advance so you've seen
a lot of these apis before um you had
the Google keynote uh where we showed
off a lot of really exciting stuff uh we
had a developer keynote um where you
learned about even more developer stuff
so what what are we doing here what is
the point of what's new in Android
existential
crisis
[Music]
so did you test this clicker I did okay
think of this talk think of this talk
like a wine tasting or a whiskey flight
or one of those soda machines that you
can push all the buttons on um this is
an artisanal handpicked selection of
things you may have overlooked uh in the
new release of Android um things you're
going to need to do no matter what to be
part of Android o and well honestly just
things we'd like to talk about and we're
on stage so um with that this is really
what's new in Android specifically what
you might have missed in the developer
preview or the io keynote or the other
keynote and why you should
care one last thing that I want to make
sure we get to today is
this everybody's always excited about
this but we're going to hold that for
the end
it's going to be
good all right let's get started ran
talk about UI and Graphics yes let's
start so uh the first feature we want to
talk about is one that you saw this
morning in one of the Keynotes Chad this
clicker does not work you didn't test
it you know wasting you
know I'm going to stand back here and
I'm going to do the slides for you all
right go to the next slide this is why
they didn't want to give us a CER so if
you
it works for me just go back
there don't want to see you uh so the
first feature that you saw this morning
in one of the Keynotes picture and
picture is not just for TV anymore it's
also for your phone so here we have an
example a third party application
Netflix running on your phone picture
and picture give me that
clicker let's move back there we go and
it's really easy to it's really easy to
implement in your application you just
have to modify your manifest and stop
playing the animation please um you just
have to support picture and picture true
you don't need in O the resizable
activity true attribute anymore and you
should also test configuration
changes and in your code when you want
to enter the picture in picture mode you
just have one line to call you get your
activity and you call enter picture and
picture super simple and it's going to
make your user super happy then uh a
feature that's very dear to my heart
it's color management so we're adding
support for white gam displays in O it's
not going to be on all devices only
devices that support the feature uh will
enable it for the for your application
we're adding support for 16bit PNG files
so you can have wider colors more
saturated colors we support ICC profiles
so color profiles embedded in bit maps
in jpegs pgs and web PS it will ensure
accurate rendition of colors across M
multiple screens we also have a bunch of
new apis but we're going to talk about
that more at the end of the week in a
different talk so because the picture is
worth a thousand words this is color
management and how it works I hope it's
clear
but really the the color management is
about something you've probably
experienced with your own application
your colors look different across
devices so we have solutions for you in
Android o so if you want to know more
there's going to be a talk that I'm
going to give on Friday at 11:30 instead
on stage two it's called understanding
color next we're also adding support for
multiple displays if your application is
already that clicker is
horrible if your if your application
supports multiple windows already the
multi to window the mode it already
supports multiple display in O uh when a
phone is connected or an Android device
is connected to multiple displays and
you have an application that's
compatible the user can choose to send
your application on a different display
when this happens you're going to get a
resizing uh resizing configuration
change you can also control on what
display your activity shows up uh you
can use the activity options for that
and you should really test your app if
you want to support this feature to help
you with testing we have two new
developer tools you can run ADB shell d
this display it will list all the
current available displays on the device
and if you call ADB shell start with
your activity intent you can specify the
display on which you want to start the
activity it's a very easy way for you to
test this uh there's a lot more to those
apis uh so we encourage you to go to the
office hours on Friday and Thursday uh
the the office hours for Windows and
activities Next
Media so uh we have a lot of very useful
classes in our media package we have the
media player the media recorder the
extractor and the codec and we added a
new get metrix API on every one of those
classes it helps you query information
about the media that you're dealing with
so you can query the resolution the
codec the bit rate the duration this
kind of data it's super easy to use just
call get metrics on one of those objects
you get the persistable bundle and you
can look up the uh documentation on
developer.android.com to know what kind
of queries are available playback is
also much approved you now have control
over the buffering in your application
so you can specify a low and a high
Watermark so the the playback of the
video will not start start until you
reach the low Watermark and the system
will do its best to keep uh cach data
between those slow and high Watermark
and you can specify the watermarks in
duration or amount of data in uh in size
we also improved seeking so when you
seek into a video you can now choose the
behavior do you want to seek to the the
closest frame to the to the next key
frame to the previous key frame or to
the closest sync frame and finally we
made uh we made DRM playback with the wi
Vine a lot easier to use in all of your
applications for recording uh until now
the media mixer uh only let let you uh
only let you add uh sorry add one video
track and or One audio track now you can
have as many audio and video tracks as
you want you can also create custom
tracks uh the M type has to start with
application slash and it's basically a
sideband where you can encode any kind
of data you want so a canal example is
to encode gyroscope data if you want to
be able to replay a 360 video or
something like
that web view comes with a really useful
new apis uh We've added the the ability
to use safe browsing that you you know
and love from chrome that detects
malwares and uh unsecure web pages so if
you add this tag in your Manifest this
metadata tag it's going to use the same
back end and the same API that Chrome
itself uses to uh secure the uh the
browsing experience for your users the
web view uses now multiple processes and
in particular there's a render process
so we also have new apis to deal with
those
multi-processes so if the render process
crashes you can use the termination
handle API to detect the crash and
decide what to do in your application
you can crash your application if you
want you can try to restart the web view
or you can just log something and show a
message to the user it's much more
graceful than before you can also use
the renderer importance API to better
deal with the low memory situations so
when the system is low on memory it's
going to try to reclaim you know Ram
from somewhere and you can tell the
system whether your web view is very
important or not that important to your
application so if the web view is
critical to your application you should
definitely take a look at this
API so you know it's the right button
right yes I know
that so there were a couple of long
requested features for animators
specifically for animator sets um they
were deceptively tricky to implement so
it took a while uh but now in Android o
we have the capability in animator sets
of having seeking so now if you have an
animator that's a collection of child
animators you can seek within those
child animators in the overall animator
set so yay uh we also have the ability
uh to
reverse Chad didn't you try to implement
those apis a while ago maybe uhhuh and
who implemented the apis in the end not
me yeah yeah exactly
okay so new capability again in animator
set to reverse so you no longer have to
you know set up a separate animator set
with all that functionality and get a
listener and all that we do all that
tedious work for you uh so yay uh
autofill because it's really tedious to
get all that information correct over
and over we saw this in the keynote
earlier uh it's the ability to uh you've
got a form to fill in there's a provider
that can give you that information so
when you get those text fields we can
automatically enter that information for
you and there are a couple of different
aspects to this one is that you can
certainly Implement your own service and
provide that capability or depend on
service that we are providing instead or
more typically you will Implement a
client of that the standard views just
work if you're using text view if you're
using edit text we know how to receive
this information interact with the
service already uh so you don't need to
do anything for standard views if you're
using custom views or if you want to
provide more information about standard
views we have apis for providing uh
hints to us about what the the value
types are as well as apis to tell us
more about your custom views and how you
want to interact with that um also if
you have a a custom view hierarchy let's
say you have a surface view uh where you
have views inside of there but all we
know is that there's a surface view then
there are apis for you to tell us about
the virtual hierarchy that you want us
to interact with there is going to be
more about this in a session on Friday
morning so go to that if you want to
learn more about
autofill and now let's talk a little bit
about text there's been a bunch of stuff
going on in the text Arena this time uh
I think we can rewrite this there we
go I only use that font because it hurts
Dan it just physically hurts him it's
awesome I think you broke him all right
so first of all um you can uh use XML to
declare font information using sort of a
neat hack with data finding but it's uh
kind of tricky to do and why shouldn't
we actually provide that capability for
you so now we do so you can now actually
put a font file directly in this new
resource font
[Applause]
directory yay indeed uh so put that in
the directory or you can tell us about
the font family you can provide several
fonts with information about the styles
of each and then you can just use those
directly as you could any other resource
uh and from code you just say give me
that resource and Away you go uh
downloadable fonts now we have the
capability for you to declare a font
that you want to use that we will then
download and cache on the system for you
if it is not there yet or if it is on
the system then we'll use it from the
cache you can do this from code or from
XML and use it as a resource just like
you did in XML fonts on the previous
exciting slide and we also have a font
provider that we are providing in a not
yet relased version Google Play services
there is a beta version of that
available at the conference this week I
don't know the details on that but
there's a session where you can learn
the details or you should be able to go
to the play services website to learn
more about that um and this gives you
access to all of Google fonts so if you
just want to use one of the standard
ones such as that beautiful font I used
to kick off the section maybe that's in
there uh then you can uh ask for that
directly from the service uh also
there's the ability to have Auto sizing
text view so typically if you resize a
text
view you never know what's going to be
like the hit
right text text is cool especially when
it's in the right font so what you get
now is the behavior on the left there
where we're just resizing The View
itself there's no change to the the font
but on the right if you opt into the
auto sizing text View Behavior then
we're going to resize the font for you
and you can specify the behavior the
step increments that you want use are
the specific sizes that you want to snap
to as it resizes so there's apis for
that there's apis in both XML as well as
uh Java programming language codes um so
knock yourself out and for all of these
text features XML fonts downloadable
fonts and auto sizing text view they're
talking about all of these in the what's
new in support Library session tomorrow
morning and you're wondering why are
they talking about it in the support
Library session aren't these o platform
apis yes they are and they are also in
support
[Applause]
Library so you can use all of these
capabilities going back on earlier
releases accessibility service utilities
if you're writing an accessibility
service great thing to do we have new
capabilities that you can take advantage
of language detection the ability to put
a button in the navigation bar along
with the other buttons there to make it
easier to access your stuff separate
volume control for accessibility volume
so you're not conflating that volume
whether the volumes on the device and
also the ability to Define custom
gestures custom fingerprint gestures uh
if you want to learn anything more about
these there's a session this afternoon
on accessibility that you should check
out and finally one of my favorite
really tiny changes I'm I'm going to say
tiny because it's one line of code for
the API but the actual CLS that went in
to fix all the code that was dependent
upon the former implementation was huge
so I don't want to detract from the work
from it but API wise really tiny kind of
hidden kind of looks like the same thing
from the outside the way find view by ID
used to be declared was something like
this public view find view by ID and
then you call that you pass in your
resource ID and get back a view and then
you immediately cast it into what you
want so text view you have to tell it's
a text view on both the left and the
right and there's parentheses and it's
big bother people use uh helper
libraries just to get around the fact
that this looks so horrible so
now we have
this
I call this feature Castaway I think I
am the only one that does
so all right blew past my first slide
that's fine um I want to talk a little
bit about some of the uh UI system UI
stuff you're going to look at um if you
have an app you're going to need to know
about adaptive icons uh I think this got
like a barely a mention uh in one of uh
step slides earlier today but
essentially this is we're trying to save
you time and money there are so many
launchers out there and each each one of
them has a different recommendation for
the shape of your icon so adaptive icons
is a new piece of technology that we
have brought to you uh in O that allows
you to say here's my background here's
my foreground cut it out to whatever
shape you like so even if the launcher
has a circle uh or it's got a round
rectangle um or it's got something awful
uh you have an icon that matches exactly
uh the the local the local flavor uh
there's going to be a ton of more
information about adaptive icons uh at a
talk on Thursday um and uh definitely go
to that one
um all right let's talk about shortcuts
and widgets um because launcher is also
a part of system UI previously to get
shortcuts and widgets on the user screen
you there's a there's a broadcast for
shortcuts that sort of kind of works and
for widgets you just have to beg the
user please please see if you can find
our widget inside the launcher
um uh in O you can now actually request
one of these things to be pinned to the
user's workspace uh using shortcut
manager for shortcuts using app widget
manager for widgets and the user then
gets the opportunity to say no I don't
want that on my desktop or yes I do and
in fact I will go ahead and place it
exactly where I want it or they can just
say sure find a spot for it which was
the previous Behavior so now you don't
have to walk the user through a long
flow you just send them right into this
dialogue it's super convenient look at
all the new users you're going to have
on your
widgets
I can just say I'm pausing for Applause
when I'm really fussing with the clicker
here um this also we'll talk about on
Thursday at
4:30 all right notifications you knew it
was coming um they're super useful uh
they're great for engagement users love
them they're they may be a little out of
control there's a lot uh that is being
used in the notification stream right
now and it's very hard for you to get
your message to the users that want it
and it's very hard for a user to manage
the inflow uh of Demands on their
attention um if it's out of control now
the user should always be control that's
been a principle of ours since the
beginning we added the ability to block
notifications from a package in Jelly
Bean and nou we refined a little bit and
added
quietening um but all through all this
our users the number one request we get
from users is okay but can I just block
some of an app's notifications on the
other hand the number one request we get
from developers is could the user just
block some of my notifications it's the
same thing everybody's been asking for
the same thing and this is where
notification channels come from it's a
new API uh in O A channel is a name
category of notifications from one app
that all share the same behavior
vibration sound light whether they pop
up on screen so that the user has
explicit and fine grain
control so as an app you'll get to set
up all your own channels uh defining the
default behavior for oh a a private
message should pop up and oh a tag maybe
doesn't pop up or it's got a lower
priority uh and then users when they
long press a notification or use the new
slide gesture to look at it they can see
what channel it's on and make changes
right there in
line uh once you target o if you take
nothing else away from my two minutes
here take away this you have to use
channels for every notification or they
will be dropped so until you target o
you can start like slowly evolving your
notification system over to channels
once you target o they have to all be
channelized because we're trying to get
to a consistent experience where the
user knows what they're going to get um
and we going to talk about that and a
lot of other great stuff including
design considerations all the code that
I didn't put up there whatever that
little blinky thing is over there uh on
this talk uh at 4:30 tomorrow there's a
lot of other great stuff coming to
system UI um we've listed some of it
here it ran off the end again I like
doing that with slides um and I
encourage you very much to check out the
developer previews or install the beta
and play with all of it we're really
proud of
it all right new apis for us developers
we expect depended on the strict mode
API that I'm sure you all using in your
debugging so now on the thread policy
you can get warned when you're not when
you're using unbuffered IO so you use an
input or an output stream without
wrapping it into one of the buffered
stream you'll get a flash or whatever it
is the uh the trigger warning you you've
set on the VM policy if you don't tag
your sockets you can also get warned
tagging sockets is really useful to do
traffic debugging using Android studio
and finally if you open another intent
if you send an intent to outside of your
application and you need to Grant per
you can also be worn so it's really easy
to use it looks like the uh the previous
apis we had media file access so one of
the uh we introduced the document
providers a while ago in a couple
releases ago and they're extremely
useful except when you have large
documents if you have a large document
you needed to download the entire Data
before you could pass it to the to the
callers to the user of the of the
document provider so now you can create
seekable file descriptors it's extremely
useful for audio video or any large type
of content it's also extremely easy to
use so you get a storage manager you
open a proxy for descriptor you give it
a call back and then we're going to
invoke your call back to request the
size of the document to request some
amount of data uh in the bite array and
then we're going to tell you when to
close
it cache data um so this is uh new apis
that the system give you to be a better
citizen so each app has a certain amount
of data it can use on the on the the in
the cach partition um and when the
system runs out of space out of storage
space it's going to start deleting some
of your cache data so if you stay below
the quarter that you're given you can
avoid your data being deleted for this
you can use the storage manager you can
query the number of bytes that are uh
allocated to your app you should query
that from time to time because the coda
can change depending on how much of the
quoda you use or how often the user uses
the application then when you want to
allocate data you can just use allocate
bytes you could do it yourself you could
just create a file you could just create
an output stream but it's much better to
do it this way because when you go
through allocate bytes if needed the
system will delete another app's cache
data to make space for your data so that
means that get cach kotab B might be
bigger than the free space that's left
on the device you can also use something
called set set cache Behavior Tombstone
so this is very useful to M to for your
app to be able to tell the difference
between a file that was never cached in
in a file that was cach but deleted so
when you set that behavior and the
system deletes some of your files in
your cache it will trunk at the file so
the file will still be there but the
size will be set to zero that tells you
that the cach was deleted by the
system um and finally the usable space
and the allocatable space are
different there's a lot going on in
Android security in this release and we
only have a little bit of time to talk
about it um I want to highlight uh some
of the Privacy improvements that are new
in Android o um if you've been using
Android ID you need to know now that it
is going to be different for every app
for every user on the device so it can't
be used to track users between apps on
the same device anymore similarly uh if
you've been reflecting into system
properties to get net. host name it is
empty now and so if you're saying well I
really need uh advertising IDs to be
able to you know uh send users the
correct contextual advertisements that
is what the advertising ID API in Google
Play services is for so go check it out
uh in Google Play but you cannot use
Android Android ID you can't trust it
anymore uh in the same way you might
have done um I had a slide here about
web viw but then Roman took it uh one
other thing I wanted to mention about
safe browsing and web view is because
web viw is now pushed to the Play Store
every 6 months you will be able to opt
into safe browsing features as far back
as lollipop uh which is
fantastic uh we also saw the unveiling
during the keynote of something we're
calling Google Play protect which is
actually a lot of technologies that
we've had uh in place before but really
haven't given the visibility that they
truly deserve because we are watching
out for people all the time so any
device with Google Play has protect uh
enabled um every app that gets uploaded
to play is pre-screened and continuously
rescreened for each uh new version
that's uploaded uh and every time you
install an app where you have play
protect set up uh that app is going to
be screened as well even if you got it
from another store or from you know uh
ADB install uh and we're excited about
this um there is so much more to talk
about uh so much more to talk about in
Android security they give me a whole
like slide deck of stuff so I said why
don't you have your own talk I actually
didn't say that they had their own talk
anyway on Thursday at 2:30 you're going
to go and find out what's new in Android
security from Soup To Nuts everything
from Colonel hardening uh all the way to
more stuff about web
view language and runtime I think you
already know what I'm going to say so
this morning we announce official
support for
cin
you saw Steph on stage and I see her
sitting right there in the hallway so if
you see her at IO go say thanks so Steph
and the whole team behind her like did
an amazing work over the past you know
how very much time to bring you this uh
so go thank her she'll pass your thanks
along to the whole team so it's
available today in Android Studio 3.0 uh
there's a lot of documentation already
online I could spend hours talking about
cing and what it's good for you what
it's good for us actually should I
hijack the talk actually he he really
could he does in fact but unfortunately
we don't have that much time in this
session so instead I invite you to come
on Friday at 10:30 uh here on this stage
there's going to be a talk called and
introduction to catlen from Andre breast
the tech Lang the lead language designer
at jet brains and Hadi VP of developer
advocacy at jetbrains and then in the
afternoon and then in the afternoon on
stage four we'll have life is great and
everything will be okay cutl is here by
Christine o from Pinterest and Jack
Wharton from Square
so and this is important to us because
uh the reason why we brought you cutl is
because you the community is using cutl
we listened we heard you we're bringing
you what you wanted so we wanted to have
you the community on stage to talk about
it better than we
can uh also if you have questions you
can come to the developer send boox at
the Android core platform booth uh today
from 3:00 to 4:30 on Thursday from 2:00
to 4:00 and on Friday from noon to 2:00
p.m. Andre uh the the language designer
will be there to answer all your
questions so please come if you want to
know anything about Kling just go there
and go ask your questions now uh like
Steph mentioned we're also doubling down
on our other languages so the Java
programming language and we also have C
CN C++ so for the Java programming
language we're adding new packages in
Android o we have java. time that
finally makes manipulating time and date
uh easy and it makes sense it makes a
lot more sense than the other apis we're
also yeah it's a bad time we're also
bringing you Java ni. file uh it
improves on the good old java. io. file
API it lets you access the attributes of
the file uh it leads to easily
manipulate path and read files we'll
look at an example and finally java. l.
invoke um it's a slight variation on
reflection um this is a gross
approximation but it's really cool
because it lets you transform and wrap
method handles to in your application so
here's an example of the new files API
so you can use the path class to get a
path and then you can just call files.
lines it will read the entire content of
the file you're going to get a stream so
in this example I'm using lambdas and
stream apis to remove all the empty
lines all the lines that start with the
pound sign and then I collect everything
back into a single string uh at the end
so it's a lot easier than it was
before
all right some changes in runtime we
heard about some of these this morning
and there's more about it this week new
concurrent copy and collector making
everything basically faster and better
concurring copying means no pause time
except when there's a full GC so it can
do all the stuff that it needs to do in
the background while you're doing other
stuff uh in particular one of the really
cool things that it can do is actually
compact the Heap in the foreground so
previously in art I believe in the
previous release it had the ability to
compact the Heap which is really good it
can defragment it can make the Heap
smaller it can make allocations and
collections faster but it could only do
this when activities were in the
background so it would go into an idle
State and then sort of do it when it was
in that idle state but when it was in
the foreground there was nothing that it
could do about the expanding and
fragmenting Heap now it can collect in
the foreground defrag in the in the
foregrounds and everything gets faster
there's also a new faster mechanism for
allocations uh so it can just do bump
pointer allocations which is way way
faster collections are faster and all of
this essentially results in less Jank
for you so faster to allocate stuff
faster to collect stuff means that just
dealing with garbage and memory in
general is much faster using art in the
O release uh lots of various
optimizations Loop unrolling inlining
one of the things to to note is that
dovic was created with a constraint of
memory uh memory typ constraints right
like everything was about saving memory
with dovic which means that it could
only do so much optimization and sort of
reached the end of its life as far as
what they could do to optimize things
when art came online basically put in a
platform upon which we could build
future optimization so we're starting to
reap those benefits now where with every
release including o and future releases
we're going to be able to do more and
more and there's a bunch of them in this
release and you should check out um a
session later in the week for more
information on that also there's Dex
locality this in particular improves
launch time for activities because we
can collect all the memory uh in the
same space so it's easier and faster to
access as your application is starting
up so there's a session on Friday
morning performs and memory uh
improvements so check that out for more
particulars there so beyond the platform
we have support Library we have other
mechanisms for delivering things that
aren't just about the O relase we wanted
to call out some of those there's the
V26 Beta release that comes out with
developer preview to the stuff that we
already talked about in text fonts and
XML downloadable fonts as well as Auto
sizing text view those are all in there
you can check those out in addition
there's something that we call Emoji
compat so one of the big issues that we
have with Emojis is that if your friends
are sending you emojis that are from
some future standard then whatever we
shipped on the release that you're
running it's not possible for you to see
those emojis and you're going to see
tofu instead which given some of the
Emojis I've seen may be more
attractive but not very meaningful so
wouldn't it be nice if you could
actually get uh updated emojis on your
device so now we have two mechanisms
that apps can use to get updated emojis
one is that apps can actually bundle
with updated emojis so they can update
the apps to the Play store and then to
their users so that the users get more
uh more timely updates of these emojis
the other and probably better certainly
long-term solution is to actually use a
a service that we can provide through
downloadable fonts that we talked about
earlier where they can automatically get
um updated fonts through downloadable
fonts right so they can the app can
build in the capability to use uh the
downloadable fonts capability to have
updated emojis as we provide them into
the
service uh so again go to the what's new
and support Library talk uh tomorrow
morning to learn more about all of those
we also had uh more stuff going on in
animation besides the small stuff in
animator set I talked about earlier we
have the ability to now have
physics-based animation stuff um so if
we want to see that in animation form
the ability to have essentially
animations driven through velocity all
of the animation capabilities that we
have in the platform to date have been
driven around the idea of a direct ation
you tell it how want you how long you
want it to run for but many animations
you really want to drive it by the
Velocity in particular animations that
are driven by user interactions you're
dragging something on the screen and you
let go wouldn't it be nice if it took
off from your finger at the same
velocity that you were dragging it when
it when you let go uh so flings Scrolls
all that stuff uh it really require a
velocity based animation system instead
you can do that with the animators but
it's really tedious it requires math
math is hard and so we've baked in that
capability to this new physics animation
system uh that is more natural more
interactive and more interruptable
because it was really intended to work
with that um user interactivity model uh
here's small demo of this so as we're
dragging the top thing around the other
two circles are essentially hinged to
the top one through Springs that you
defined and so they follow it in space
they don't they're not lock step
following it but they're basically on
Springs that are attached uh and they
immediately benefit from that
interactivity and that physics based
notion of these Springs so there's a
talk on this on Friday afternoon uh all
about the new physics-based animation
stuff please come to that if you want to
know more about that architecture
components this was mentioned in the
Keynotes um we thought that maybe
sometimes Android development is a
little bit harder than it needs to be so
we um took a step back and said okay
what are some of the major problems that
we should take another run at to try to
simplify this for app Developers and a
couple of those that we've taken
specific runs at right now are around
life cycle uh it is apparently kind of
hard to deal with the fact that your
activities can die at any time when you
rotate the screen or it goes in the
background or whatever and finding out
exactly what state you're in can be a
bit tedious it is an ongoing issue that
all app developers need to deal with so
we've taken another approach to that to
make that much easier and in addition to
that we've also taken a look at
persistence so you can issue raw SQL now
and that's about all you got on the
system um so we have a new way of doing
that that builds on that capability and
makes it easier and more powerful we're
going to talk about all of those this
week we're going to have an introduction
to architecture components I would
encourage you to go to this afternoon uh
that's actually immediately after this
session and then tomorrow morning we're
going to have one on the life cycle
problem and how we've solved that and
we're also going to have one on
persistence and offline and all of these
are bits that you can actually try out
in an early release form already um so
check those out hopefully it'll make
your developer lives easier there are
some Behavior changes some of which
you're going to care about more than
others uh there have been some changes
to the behavior of background
applications in particular location if
you are running as a background
application uh you're only going to get
course grain uh location information and
all of these things are being done not
to make it harder but to make the
devices better right if all applications
have all capabilities at all times and
they can do whatever they need to or
want to at any time then essentially
you're going to run the back battery
down because everybody's doing too much
work all the time so we're trying to be
judicious about which applications
actually need the services at which
times so that we can make the experience
for the user much better the experience
for your users much better as well so
one of those is in location course grain
information when you're in the
background another one is Wake locks we
noticed that it was common for an
application to go into a background
State and then into a cach state and it
would have a wake clock at the time and
it would just keep that wake clock and
it would hold it for a very long time
and that runs the battery down so now
sometime after you go into a cach state
the white clock is automatically
released so that it doesn't put the
device into that um unseemly State uh
and also there are uh limits to
execution when you're running in the
background there have also been changes
to alert windows in particular there's
this new type of window called type
application overlay if you are targeting
the osdk then this is the window type
that you must use if you want to have an
alert window capability if you're you're
on earlier releases obviously that
didn't exist you're not going to use
this just know that whatever window type
you are using is going to be layered
under one of these type application
overlay Windows uh because we have a
more clearly defined um layering policy
now with that there is more information
about this this afternoon at w at 5:00
background check and other insights um
so please come to that if you want to
know all the details about that uh and
then finally we promised to get back to
this didn't we we did this is our one
more thing right all right so we were
going to talk about this and I think I
mean we have to we have to have a drum
roll don't we how about like a thigh
roll do we have a thy
roll all right that sounds nice
unfortunately I'm looking at the timer
on stage and I'm going to say that o
stands
for oh no we're out of time thank
[Applause]
[Music]
you
[Music]
oh