Giter VIP home page Giter VIP logo

avenging's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

avenging's Issues

wear: Black screen/flickering on listing

onLoadMore black screen

Context

notifyDataSetChanged() causes the whole adapter to be refreshed which (in some cases) causes a black screen and requires user interaction to refresh the view

Process

  • Start app
  • Scroll through the the characters while in the list mode
  • Once the end is reached (server makes a request)
  • Upon receiving the new data set, screen sometimes gets black

    Expected result

    Receiving pagination should be invisible to the user

Current result

Sometimes screen becomes black.

Possible Fix

Change from GridViewPagerAdapter to fragment adapter

Improve global vars to project:build.gradle

Some variables (such as compileSdkVersion and buildToolsVersion) don't need to be secret therefore shouldn't/don't need to be on gradle.settings

Context

With the current situation we have a (very) verbose build.gradle and unnecessary CI variables.

Process

Does not apply.

Expected result

Does not apply

Current result

Does not apply

Possible Fix

After passing to the project's build.gradle like this:

    ext.buildToolsVer = '24.0.0'
    ext.androidSupportVer = '24.1.1'
    ext.googlePlayServicesVer = '9.0.2'

We can remove both the CI variables and verbose build.gradle variables.

Tasks to keep track of this enhancement:

  • Move variables from gradle.properties to project:build.gradle
  • Get variables from project:build.gradle from both mobile and wear modules
  • Update README.MD
  • Remove CI variables (this is outside of the project scope)
  • Update CI (.travis.yml) to accept licenses
  • What went wrong:
    A problem occurred configuring project ':core'.

    You have not accepted the license agreements of the following SDK components:
    [Android SDK Build-Tools 24.0.2].
    Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.
    Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html

wear: List improvements

Change list mode to wear-guidelines, handle list clicks to launch the new details activity.

Tasks

  • Change list UI to 3 items per screen.

  • Handle the onLoadMore() function

  • (try to) Fix flickering effect when the dataset changes

  • List click should start the new details activity

  • Extra: Add voice recognition for search feature #25

mobile: tests-ui - List

Automate the UI flow of the app

More info here

Process

Create Instrumentation tests for the List features

  • Search (correct characters displayed)
  • List refresh
  • List click
  • List end reached (onLoadMore())
  • No connection
  • No results

Memory leak - ListActivity on config change

@figengungor reported this.

Noticed that when orientation is changed on ListActivity several times, LeakCanary finds a memory leak.

Context

Apparently, RecyclerView in ListFragment leaks ListActivity. When the adapter is detached from RecyclerView in onDestroyView(), the memory leak is fixed.

Process

[ordered list the process to finding and recreating the issue, example below]

  1. User opens app
  2. Wait for the Character's list is retrieved
  3. Move the device to force multiple configuration changes

Expected result

There should be no memory leaks

Current result

LeakCanary detects a memory leak, the Adapter is holding a reference to the ListFragment since it has the setRetainInstance(true) the onDestroy() is not called.

Possible Fix

  • Set the adapter to null in the ListFragment#onDestroyView but this isn't very elegant. #19

LeakCanary screenshot

9bb5e0de-a22d-11e6-9ef0-f8d0705a1264

Thanks!

Proguard rules

Been trying hard to get a minified version working but can't seem to get the correct rules.

Context

Building with minifyEnabled = true / proguard gives many warning ultimately failing.

Process

  • Build with prouguard (minifyEnabled = true).

Expected result

  • App should be built

Current result

  • Fails to build

Possible Fix

  • Get the necessary proguard rules

Thanks!

wear: Search via Voice

This isn't mandatory, more like a "nice-to-have".

Tutorial from android developer documents here

  • Use google voice recognition for search characters feature.

wear: Character Details

The wear version of the app isn't really showing any content on the details screen

Context

We should have a similar experience as the mobile version, showing the description, list of comics, events etc.

Process

  1. User clicks on an (initial) character list item
  2. Character details activity should start
  3. First screen Image, other screens should appear by this order using a swipe right:
  • Description
  • Comics (list scroll down)
  • Series (list scroll down)
  • Stories (list scroll down)
  • Related links (list scroll down)

Expected result

Screens should appear with the list order

Memory leak - ListActivity on config change

Noticed that when orientation is changed on ListActivity several times, LeakCanary finds a memory leak.

Context

Apparently, RecyclerView in ListFragment leaks ListActivity. When the adapter is detached from RecyclerView in onDestroyView(), the memory leak is fixed.

Process

[ordered list the process to finding and recreating the issue, example below]

  1. User opens app
  2. Wait for the Character's list is retrieved
  3. Move the device to force multiple configuration changed

Expected result

There should be no memory leaks

Current result

LeakCanary detects a memory leak, the Adapter is holding a reference to the ListFragment since it has the setRetainInstance(true) the onDestroy() is not called.

Possible Fix

  • Set the adapter to null in the ListFragment#onDestroyView but this isn't very elegant. #19

LeakCanary screenshot

9bb5e0de-a22d-11e6-9ef0-f8d0705a1264

Thanks!

core: Custom retrofit converter to remove DataWrapper<T>

Using customer converters we can delegate the deserialization of the meta-data to the HTTP client, instead of having the abstract model Jake Wharton's talk on custom converters.

Context

This enables us to remove unnecessary boilerplate encapsulating models/code.

Process

See the talk then:

  1. Create custom converter
  2. Configure the custom converter to deserialize the metadata
  3. Feed the actual model(s) directly
  4. Make necessary Presenter(s), Service interfaces changes

wear: tests-ui - List

Automate the UI flow of the app

More info here

Process

Create Instrumentation tests for the List features

  • Search (correct characters displayed)
  • List refresh
  • List click
  • List end reached (onLoadMore())
  • No connection
  • No results

mobile: Character fragment on configuration change

ANR on configuration change in Character detail screen

Context

App should not crash on the Character details screen rotation

Process

  • On the list screen click on any character
  • On character details screen make the screen rotate
  • Application sometimes crashes

Expected result

Should be able to rotate screen without loosing any info or causing ANRs

Current result

Application sometimes crashes on configuration change

Possible Fix

  • Handle the save instance state and retrieve required data on resume.

Import project directly to Android Studio throws error Unkown property 'marvelProductionEndPoint'

Here is the full error:

Error:(18, 0) Could not get unknown property 'marvelProductionEndpoint' for ProductFlavor_Decorated{name=main, dimension=null, minSdkVersion=DefaultApiVersion{mApiLevel=11, mCodename='null'}, targetSdkVersion=DefaultApiVersion{mApiLevel=24, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null, versionCode=null, versionName=null, applicationId=null, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}, mWearAppUnbundled=null} of type com.android.build.gradle.internal.dsl.ProductFlavor. <a href="openFile:/Users/smarques84/AndroidStudioProjects/avenging/core/build.gradle">Open File</a>

mobile: List fragment on configuration change

ANR on configuration change in List screen

Context

App should not crash on the List screen rotation

Process

  • On List screen make the screen rotate
  • Application sometimes crashes

Expected result

Should be able to rotate screen without loosing any info or causing ANRs

Current result

Application sometimes crashes on configuration change

Possible Fix

  • Handle the save instance state and retrieve required data on resume.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.