Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Plan for today
Toward debugging and understanding
Reviewing the onCreate, onStart, onX
methods of an Android Activity
Today: android.util.Log
Next week: debugger
What happens when you rotate your phone?
MVC: Model View Controller: project
Reviewing Java concepts
Compsci 290.3/Mobile, Spring 2017
4.1
android.util.Log
https://developer.android.com/reference/an
droid/util/Log.html
Why is this android.util and not java.util?
Path and package name
Where does Log write data? Why would
you use Log rather than System.out?
What about what's on your phone?
Can your App "phone home" with log info?
Compsci 290.3/Mobile, Spring 2017
4.2
Review log changes
protected void onStart() {
super.onStart();
Log.d(DTAG,"onStart " + getIDs());
}
private String getIDs(){
return String.format("myId = %d, instance = %d",
myInstanceID,ourInstances);
}
private int myInstanceID;
private static int ourInstances;
private static String DTAG = "MainActivityDebug";
Compsci 290.3/Mobile, Spring 2017
4.3
Java Language Concepts
Static variables are per class, not per object
If you create 100 Pixel objects, each has it's own
r,g,b values, e.g., in myRed, myGreen, myBlue
Total number of pixels ever created would be a
static variable, not an instance variable!
Use formatted strings, e.g., String.format
rather than concatenating strings
Android is smart about String + v.
StringBuilder
Compsci 290.3/Mobile, Spring 2017
4.4
Concepts for next project
Review Activity, Layout, Resources
Model examples we've done, use Android
Developer documentation, read and read and
read
You'll create a "quiz". Could be anything,
Buzzfeed, Duolingo TinyCards, something
simple
Source of quiz
UI of taking quiz
Persistence of quiz
Compsci 290.3/Mobile, Spring 2017
4.5
Model View Controller
(aka MVC) This object-oriented design
pattern is ubiquitous
Main idea is that controller mediates between
model and view, M and V loosely coupled
http://stackoverflow.com/questions/29594105/mvc-is-it-model-to-viewor-controller-to-view
Compsci 290.3/Mobile, Spring 2017
4.6
Activity, Views, MVC and Project
Where are Views created, how are they
accessed?
Activity accesses widgets via findViewById, use
the power of Android Studio to help
Instance variables access state across methods,
e.g., myLeftButton
What should the source of questions be?
Not in Activity, why not?
Not in XML file, why not?
Loose coupling, High cohesion
Compsci 290.3/Mobile, Spring 2017
4.7
Android Concepts
https://gitlab.oit.duke.edu/ola/quizmaster
How do you make a custom/app icon?
Where do you store images?
Why are there so many version of images?
What is a toast?
Toast.makeText(
MainActivity.this,
"left click, total = "+ourButtonCount,
Toast.LENGTH_SHORT).show();
Compsci 290.3/Mobile, Spring 2017
4.8
Java Concepts
What is a constructor? What is a method?
What is an instance variable?
What do access modifiers mean: public,
private, protected?
Java vs. what we're doing wrt protected
Inner classes and how they work, toward
creating an Interface
Compsci 290.3/Mobile, Spring 2017
4.9