first do no harm - 360|andev
TRANSCRIPT
![Page 1: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/1.jpg)
@brwngrldev
![Page 2: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/2.jpg)
What’s Involved:• Major in Math/Science
• Take the MCAT
• Go to Medical School
• Take the USMLE Step 1
• Do Rotations
• Take the USMLE Step 2
• Complete Internship
• Do Residency
• Take the USMLE Step 3
• Take the Board Exams
• Do a Fellowship
@brwngrldev
![Page 3: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/3.jpg)
![Page 4: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/4.jpg)
@brwngrldev
![Page 5: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/5.jpg)
@brwngrldev
![Page 6: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/6.jpg)
How can I become
an Android
Developer?@brwngrldev
![Page 7: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/7.jpg)
How can I become a
great Android
Developer?@brwngrldev
![Page 8: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/8.jpg)
@brwngrldev
![Page 9: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/9.jpg)
@brwngrldev
![Page 10: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/10.jpg)
Newsletters
@brwngrldev
![Page 11: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/11.jpg)
Podcasts
@brwngrldev
![Page 12: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/12.jpg)
Online Courses• At your own pace
• All aspects of development
• Different perspectives
@brwngrldev
![Page 13: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/13.jpg)
Online Courses - Udacity
@brwngrldev
![Page 14: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/14.jpg)
Online Courses - Caster.IO
@brwngrldev
![Page 15: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/15.jpg)
“…associate with
eagles, you will learn
how to soar…” - Ojo Michael E.
@brwngrldev
![Page 16: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/16.jpg)
Conferences
• Hear from the Experts
• Grow your Network
• Learn new Techniques
@brwngrldev
![Page 17: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/17.jpg)
Conferences
![Page 18: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/18.jpg)
Open Source
• Countless Examples
• Learn by Doing
• Design Patterns in Action
@brwngrldev
![Page 19: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/19.jpg)
Open Source
@brwngrldev
![Page 20: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/20.jpg)
Open Source
@brwngrldev
![Page 21: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/21.jpg)
Study• Newsletters
• Podcasts
• Online Courses
• Conferences
• Open Source@brwngrldev
![Page 22: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/22.jpg)
@brwngrldev
![Page 23: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/23.jpg)
@brwngrldev
![Page 24: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/24.jpg)
Prevention
• Static Code Analysis
• Code Reviews
• Leak Canary
• Testing
@brwngrldev
![Page 25: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/25.jpg)
Static Code Analysis
Lint
Checkstyle
FindBugs
PMD
@brwngrldev
![Page 26: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/26.jpg)
Static Code Analysis
0
40
80
120
160
Checkstyle FindBugs PMD Error Prone Lint
@brwngrldev
![Page 27: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/27.jpg)
Static Code Analysis - FindBugs
@brwngrldev
![Page 28: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/28.jpg)
Static Code Analysis - FindBugs
@brwngrldev
![Page 29: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/29.jpg)
Code Reviews
@brwngrldev
![Page 30: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/30.jpg)
Code Reviews
@brwngrldev
![Page 31: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/31.jpg)
Code Reviews
@brwngrldev
![Page 32: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/32.jpg)
Code Reviews
Here’s my awesome code!! Cool, looks like line 54 could cause an NPE though.
@brwngrldev
![Page 33: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/33.jpg)
Code Reviews
Here’s my awesome code!
Oh yeah, you’re right. Will fix!
! Cool, looks like line 54 could cause an NPE though.
@brwngrldev
![Page 34: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/34.jpg)
Code Reviews
Here’s my awesome code!
Oh yeah, you’re right. Will fix!
Thanks for not `let`ting me forget that! 😂
! Cool, looks like line 54 could cause an NPE though.
Instead of an `if` here, a `let` would be better.
@brwngrldev
![Page 35: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/35.jpg)
Code Reviews
@brwngrldev
![Page 36: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/36.jpg)
Leak Canary
debugCompile “…:leakcanary-android:$leak” releaseCompile “…:leakcanary-android-no-op:$leak” testCompile “…:leakcanary-android-no-op:$leak”
@brwngrldev
![Page 37: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/37.jpg)
Leak Canary
private BooksAdapter booksAdapter; @Bind(R.id.recyclerView) RecyclerView recyclerView; private static Toolbar toolbar; private BooksPresenter booksPresenter;
@brwngrldev
![Page 38: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/38.jpg)
Leak Canary
@brwngrldev
![Page 39: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/39.jpg)
Architecture
@brwngrldev
![Page 40: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/40.jpg)
Architecture
Foo Foo Bar
Baz
@brwngrldev
![Page 41: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/41.jpg)
MVP + Dagger
@brwngrldev
![Page 42: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/42.jpg)
MVP + Dagger
@brwngrldev
EVENT BUS/RXJAVA
DATABASE
REPOSITORY
REPOSITORY
ACTIVITY
FRAGMENT
PRESENTER
PRESENTER
SERVICE
![Page 43: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/43.jpg)
API Testing
![Page 44: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/44.jpg)
API Testing - Postman
@brwngrldev
![Page 45: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/45.jpg)
API Testing - Postman
1.Send Requests
2.Receive Response
3.Run Test Scripts
@brwngrldev
![Page 46: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/46.jpg)
Sending Requests
@brwngrldev
![Page 47: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/47.jpg)
API Response[ { "userId": 1, "id": 1, "title": "sunt aut facere repellat", "body": "quia et suscipit\nsuscipit recusandae" }, { "userId": 1, "id": 2, "title": "qui est esse", "body": "est rerum tempore vitae\nsequi sint" } ]
https://jsonplaceholder.typicode.com@brwngrldev
![Page 48: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/48.jpg)
Test - Status Code
tests["Status code is 200"] = responseCode.code === 200;
@brwngrldev
![Page 49: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/49.jpg)
Test - Schema
var schema = { "type": [“array”, “null”] };
var jsonData = JSON.parse(responseBody);
tests["Valid Schema"] = tv4.validate(jsonData, schema);
@brwngrldev
![Page 50: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/50.jpg)
IT GETS
BETTER@brwngrldev
![Page 51: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/51.jpg)
Test - Schema
@brwngrldev
{ "userId": 1, "id": 1, "title": "sunt aut facere repellat provident", "body": "quia et suscipit\nsuscipit recusandae" }
![Page 52: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/52.jpg)
Test - Schema
var postSchema = { "type" : "object", "properties" : { "userId": { "type" : "integer" }, "id": { "type" : "integer" }, "title": { "type" : "string" }, "body" : { "type" : "string" } }};
@brwngrldev
![Page 53: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/53.jpg)
API Testing
@brwngrldev
![Page 54: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/54.jpg)
Set Up Monitors
@brwngrldev
![Page 55: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/55.jpg)
Prevention
• Static Code Analysis
• Code Reviews
• Leak Canary
• Testing
@brwngrldev
![Page 56: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/56.jpg)
@brwngrldev
![Page 57: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/57.jpg)
74 year oldstomach pain
34 year oldstomach pain
@brwngrldev
![Page 58: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/58.jpg)
@brwngrldev
![Page 59: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/59.jpg)
@brwngrldev
![Page 60: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/60.jpg)
@brwngrldev
![Page 61: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/61.jpg)
LET’S
SHARE@brwngrldev
![Page 62: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/62.jpg)
Code Outside
InsideEmulator
![Page 63: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/63.jpg)
CODE
@brwngrldev
![Page 64: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/64.jpg)
@Overridepublic void onFailure(Call<Book> call, Throwable t) { bus.post(new BookLoadingErrorEvent(id));
Timber.e(t, "Unable to load the book data from API.");}
Write Logs
@brwngrldev
![Page 65: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/65.jpg)
Logcat/Pidcat
@brwngrldev
![Page 66: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/66.jpg)
@brwngrldev
![Page 67: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/67.jpg)
Log Events
public void trackEvent(String event) { analytics.track(event);
if (Fabric.isInitialized()) { Crashlytics.log(event); }}
@brwngrldev
![Page 68: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/68.jpg)
Crashlytics
@brwngrldev
![Page 69: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/69.jpg)
OUTSIDE
@brwngrldev
![Page 70: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/70.jpg)
Crashlytics
@brwngrldev
![Page 71: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/71.jpg)
Crashlytics
@brwngrldev
![Page 72: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/72.jpg)
Classy Shark
@brwngrldev
![Page 73: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/73.jpg)
Classy Shark
@brwngrldev
![Page 74: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/74.jpg)
Battery Historian
@brwngrldev
![Page 75: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/75.jpg)
Battery Historian
@brwngrldev
![Page 76: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/76.jpg)
Battery Historian
@brwngrldev
![Page 77: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/77.jpg)
@brwngrldev
![Page 78: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/78.jpg)
Systrace
@brwngrldev
![Page 79: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/79.jpg)
Systrace
Alerts Pane
@brwngrldev
![Page 80: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/80.jpg)
Systrace
Alert Detail
@brwngrldev
![Page 81: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/81.jpg)
INSIDE
@brwngrldev
![Page 82: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/82.jpg)
Apk Analyzer
@brwngrldev
![Page 83: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/83.jpg)
Android Profiler
@brwngrldev
![Page 84: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/84.jpg)
Android Profiler: Memory
@brwngrldev
![Page 85: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/85.jpg)
Android Profiler: CPU
@brwngrldev
![Page 86: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/86.jpg)
@brwngrldev
![Page 87: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/87.jpg)
Android Profiler: Network
@brwngrldev
![Page 88: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/88.jpg)
EMULATOR
@brwngrldev
![Page 89: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/89.jpg)
Android Options:
GPU Overdraw
blue -> green -> light red -> dark red
(1x) (4x or more)
@brwngrldev
![Page 90: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/90.jpg)
Android Options:
GPU Overdraw
@brwngrldev
blue -> green -> light red -> dark red
(1x) (4x or more)
![Page 91: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/91.jpg)
Android Options:
Profile GPU Rendering
16 milliseconds
@brwngrldev
![Page 92: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/92.jpg)
Android Options:
Profile GPU Rendering
https://developer.android.com/studio/profile/dev-options-rendering.html@brwngrldev
![Page 93: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/93.jpg)
@brwngrldev
![Page 94: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/94.jpg)
@brwngrldev
![Page 95: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/95.jpg)
Resources• http://www.kotlinweekly.net - Kotlin Weekly
• http://androidweekly.net - Android Weekly
• https://www.androiddevdigest.com - Android Dev Digest
• http://www.adavis.info/2015/07/android-devs-listen-up.html - Podcasts
• https://www.udacity.com - Udacity
• https://caster.io - Caster.IO
• http://androidstudygroup.github.io/conferences - Android Conferences
![Page 96: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/96.jpg)
Resources• http://findbugs.sourceforge.net - FindBugs
• https://github.com/square/leakcanary - Leak Canary
• https://www.getpostman.com - Postman
• https://github.com/JakeWharton/timber - Timber
• https://github.com/JakeWharton/pidcat - Pidcat
• https://fabric.io/kits/android/crashlytics - Crashlytics
• https://www.lynda.com/trial/AnnyceDavis - Lynda.com
![Page 97: First Do No Harm - 360|AnDev](https://reader031.vdocuments.net/reader031/viewer/2022013013/5a6487937f8b9a27568b5b7b/html5/thumbnails/97.jpg)
Resources
• https://github.com/google/android-classyshark - ClassyShark
• https://github.com/google/battery-historian - Battery Historian
• https://developer.android.com/studio/profile/systrace.html - Systrace
• https://developer.android.com/studio/build/apk-analyzer.html - APK Analyzer
• http://www.adavis.info/2015/03/android-overdraw-what-is-it-and-why.html - Overdraw
• https://developer.android.com/studio/profile/dev-options-rendering.html - GPU Rendering