MichalDanielDobrzanski / RecruitmentMultiNavHostJniTask

Clean code app with multiple NavigationHostFragments for 2 backstacks and JNI CPP integration

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Android candidate test

Your task

Fork this repo. Explore existing code. It has some good bits and some bad bits. Feel free to change anything. Actually, feel free to not use this code at all and do your own project. We've made it to save you some time and to highlight some expectations, like writing tests.

  • Get this C++ class that will act as your data source and use it instead of the dummy data source that is currently there
  • Create detail screen for a movie
  • Add bottom tabs. It should have 2 tabs.
    • First tab should contain existing view that shows a list of movies
    • Second tab should contain a grid of same movies
    • Tapping on a movie in either tab should open detail screen within same tab
    • Each tab should have a separate backstack. So if you open movie detail screen in first tab, then go to second tab, then go to first tab again - movie detail screen should be visible
  • Add ability to like a movie
    • Should be able to like a movie in first tab with a list
    • Should be able to like a movie in second tab with a grid
    • Should be able to like a movie in detail screen
    • When like state changes, it should be reflected in all 3 screens (handling everything in memory is OK)
  • Anything else you want to do
    • Improve the UI
    • Use any library you want

Native code:

  • using marshalling for ensuring that objects' data is copied from native to JVM memory
  • using callbacks on particular instance apporach
  • using GlobalReference for accessing particular JVM instance
  • using javap -s -p core.build.intermediates.javac.debug.classes.com.hr.core.repository.MoviesNativeRepository for JVM signatures
  • using @Keep so Proguard will not minify and remove unused methods from JVM side

Resources:

About

Clean code app with multiple NavigationHostFragments for 2 backstacks and JNI CPP integration


Languages

Language:Kotlin 74.0%Language:C++ 17.1%Language:Java 7.8%Language:CMake 1.1%