2. About Me (@AhmedNMahran)
● Coder Since 2000
● Founder of The Egyptian Kotlin Community
● Google/Udacity Certified Android Dev.
● Oracle Certified Java Associate
● Microsoft Rewarded at the age of 11
● Senior Android Developer @ Hungerstation
5. Swift moves, behind the scenes
2x faster:
Get started on your favorite tasks more quickly with
2x the boot speed when powering up*
*boot time as measured on Google Pixel
Background limits:
Android Oreo helps minimize background activity
in the apps you use least, it's the super power you can't even see.
6. A hero who’s ready before you are
Autofill:
With your permission, Autofill remembers your logins
to get you into your favorite apps at supersonic speed.
7. Do two things at once
Picture-in-Picture:
Allows you to see two apps at once,
it's like having super strength and laser vision.
8. Dive into more apps with fewer taps
Notification Dots:
Press the notification dots to quickly see what's new,
and easily clear them by swiping away.
9. Peace of mind in
the palm of your hand
Google Play Protect:
Working to keep your device and data safe
from misbehaving apps by scanning over
50 billion apps per day,
even the ones you haven't installed yet!
10. Talk about a life saver
Whether you're talking, playing,
working or streaming,
you can feel confident about
keeping your battery strong and full of life.
11. Express yourself
in more ways than ever
Emoji:
Share the feels with a fully redesigned emoji set,
including over 60 new emoji.
13. What’s New For Developers
● Background Execution Limits
● User Privacy Updates
● Notification Channels
● Autofill Framework
● Picture In Picture
● Multi Display Support
● Font Resources
14. Background Execution Limits
● Most Manifest-declared implicit broadcast receivers will not be called
○ Some are allowed examples:
■ BOOT_COMPLETED
■ LOCALE_CHANGED
■ USB_DEVICE_ATTACHED
● Explicit broadcast receivers are allowed
● Runtime implicit receivers will be called
15. Background Execution Limits
● Background services run for a short time after the app is backgrounded
● Can’t be called using startService() or PendingIntent when the app is not is
the foreground
● Foreground services
○ Unchanged (still allowed)
○ New API NotificationManager#startServiceInForeground
■ Takes a notification and ID
16. Background Execution Limits
● Cases even when app is not targetting O
○ Wake locks released in cached state.
○ Background location updates are limited
■ Only few times per hour
○ Passive Location Unchanged
● Foreground Location
○ unchanged for Foreground App/Service
17. User Privacy
● Pre O
○ Settings.Secure.ANDROID_ID same across apps
● Post O
○ Settings.Secure.ANDROID_ID unique to each app
○ Uses a combination of app-signing key, user, and device
○ On devices shipping with Google Play services and Advertising ID
■ you must use Advertising ID.
■ A simple, standard system to monetize apps,
■ Advertising ID is a unique, user-resettable ID for advertising. It is provided by Google
Play services.
○ Other device manufacturers should continue to provide ANDROID_ID.
18. User Privacy
● Account Access
○ GET_ACCOUNTS permission is not sufficient
○ Must user AccountChooserActivity
Intent pickAccount = AccountManager.newChooseAccountIntent();
startActivityForResult(pickAccount,REQUEST_CODE_PICK_ACCOUNT)
● Account Owner chooses which app to use his account.
19. Notification Channel
● Named Categories defined per-app
● User controlled
○ Block
○ Change Importance
○ Add vibration and lights
○ Change lockscreen privacy
20. Notification Channel
● All apps targetting O must implement notification channels
NotificationChannel channel = new NotificationChannel(id,name,importance);
channel .setLightColor(Color.RED);
channel.enableVibration(true);
//create the Builder
Notification.Builder builder = new Notification.Builder(this,id);
21. Autofill Framework
A number of fields can be used
● Addresses
● Credit Card Information
● User Names
● Passwords
Custom Views supported
22. Picture in Picture (PIP)
● Available for all devices not only TVs
● In Manifest
<activity android:name=".MainActivity"
android:supportsPictureInPicture="true
● In activity
enterPictureInPictureMode(params);
23. Multi-Dsiplay
● User can launch activities in a
secondary display
● When running on device with
secondary display.
24. Font Resources
● Fonts are now fully-supported resource type
○ Add font res folder
○ Call getResources().getFont(R.font.font_name);