Android Architecture: Difference between revisions
Jump to navigation
Jump to search
Line 40: | Line 40: | ||
==Step 2== | ==Step 2== | ||
*Moved CoinModel, Divider and MyCryptoAdapter to their own files in recview package | *Moved CoinModel, Divider and MyCryptoAdapter to their own files in recview package | ||
*Add LocationManager, implemented lifecycle observer | |||
*Added create and destruction of FusedLocationProviderClient in lifecyle | |||
*Added disconnect of GoogleAPiClient and removal of lifecycle observer | |||
<syntaxhighlight lang="java"> | |||
@OnLifecycleEvent(Lifecycle.Event.ON_START) | |||
public void init() { | |||
Log.d(TAG, "init() called"); | |||
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(mCon); | |||
} | |||
@OnLifecycleEvent(Lifecycle.Event.ON_STOP) | |||
public void clean() { | |||
Log.d(TAG, "clean() called"); | |||
if(mGoogleApiClient !=null) { | |||
mGoogleApiClient.disconnect(); | |||
} | |||
final LifecycleOwner lcOwner = (LifecycleOwner)mCon; | |||
lcOwner.getLifecycle().removeObserver(this); | |||
mCon = null; | |||
} | |||
</syntaxhighlight> | |||
==Step 3== | |||
*Created a LocationActivity to contain all of the logic for the runtime permission to use Location | |||
*Add LocationManger to LocationActivity | |||
*Change MainActivity to be derived from LocationActivity |
Revision as of 23:54, 20 December 2020
Architecture
Typical Android apps look like this
And this
Here is an overview of the app prior to looking at it
Looking at this I am building an app with the architecture of
The was discussion on god class which I had not heard before
- Contains a high number of components
- Components are coupled
- Lengthy class
Avoid a all costs or don't cos I like getting rid of them
Design Patterns
Just a reminder of the design patterns but with maybe a more Android flare.
MVC
MVP
MVVM
Summary
Clean Architecture
Application Tidy Up
Step 1
- Created TrackerActivity which extends AppCompatActivity and will be now good for other activities
- Move Tracker to its own class and implement the Lifecycle Observer interface
- When using lifecycle observer we need to remote it on destory
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void trackOnDestroy() {
Log.d(TAG, "trackOnDestroy called");
((AppCompatActivity) con).getLifecycle().removeObserver(this);
// mQueue.add(generateTrackingStringRequest("destroy"));
}
Step 2
- Moved CoinModel, Divider and MyCryptoAdapter to their own files in recview package
- Add LocationManager, implemented lifecycle observer
- Added create and destruction of FusedLocationProviderClient in lifecyle
- Added disconnect of GoogleAPiClient and removal of lifecycle observer
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void init() {
Log.d(TAG, "init() called");
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(mCon);
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void clean() {
Log.d(TAG, "clean() called");
if(mGoogleApiClient !=null) {
mGoogleApiClient.disconnect();
}
final LifecycleOwner lcOwner = (LifecycleOwner)mCon;
lcOwner.getLifecycle().removeObserver(this);
mCon = null;
}
Step 3
- Created a LocationActivity to contain all of the logic for the runtime permission to use Location
- Add LocationManger to LocationActivity
- Change MainActivity to be derived from LocationActivity