Apptim logo
    Understanding report FAQ
  • App logoJumbo App  v1.8.6
  • SUMMARY
  • ENVIRONMENT
  • CORRECTNESS 1 1
  • ERRORS 4
  • BUG REPORTS
  • LOGS
 
14%
Avg. CPU Usage
182MB
Avg. Mem. Usage
35%
Avg. Power Usage
345442kB
Downloaded Data
344250kB
Uploaded Data
4
Errors/Exceptions

Summary
  • Low
  • Moderate
  • Warning

Too many controls on the screen 158  (Moderate Limit: 50 Warning Limit: 100)
High level of uploaded data 344250 kB (Moderate Limit: 5000kB Warning Limit: 20000kB)
High level of downloaded data 345442 kB (Moderate Limit: 20000kB Warning Limit: 50000kB)
Nested layouts level is medium 19  (Moderate Limit: 10 Warning Limit: 20)
Power 35 % (Moderate Limit: 33% Warning Limit: 66%)
Exception  4
Pass
Activities on Back Stack: 1
Max. lag in render frame (jank): 3frames
Max. drawing time: 62ms
Max. CPU usage: 30%
Max. memory usage: 234MB

Session info

Session name:
Test Webinar - JUMBO
Duration:
Started:
Ended:
Device:
HUAWEI ANE-LX3 9

Video

Resources

CPU

No data was recorded.

Threads

No data was recorded.

Memory (Pss, Dalvik/Native Heap, GC usage)

No data was recorded.

Network (Transmit/Receive, Adress List)

Address List

No data was recorded.

Render (FPS, Render Time, Janks)

No data was recorded.

Database (SQL Time, TOP SQL's)

Worst Time (TOP 10 per Database)

Total sentence count (TOP 10 per Database)

No data was recorded.

Power usage (Energy consumption)

No data was recorded.

 
Crash 4
ANR

Crash

An application typically crashes when it performs an operation which is not allowed by the operating system. The operating system then triggers an exception or signal in the application.

Exceptions

An exception is an event that occurs during the execution of a program that disrupts the normal flow of instructions. A exception contains a snapshot of the execution stack of its thread at the time it was created. It can also contain a message string that gives more information about the error.

Exception 

Detail:
  • java.lang.NullPointerException: Attempt to invoke virtual method 'void com.core.util.StackNavigationController.clearBackStack()' on a null object reference
    at com.core.presentation.fragment.BaseFragment.clearBackStack(BaseFragment.java:185)
    at com.core.util.TabNavigationController.resetTabBackStack(TabNavigationController.java:47)
    at com.core.util.TabNavigationController.onTabReSelected(TabNavigationController.java:38)
    at com.roughike.bottombar.BottomBar.updateSelectedTab(BottomBar.java:952)
    at com.roughike.bottombar.BottomBar.selectTabAtPosition(BottomBar.java:564)
    at com.roughike.bottombar.BottomBar.selectTabAtPosition(BottomBar.java:543)
    at com.cencosud.cl.jumboahora.dashboard.presentation.activity.DashboardActivity.initBotomBar(DashboardActivity.java:106)
    at com.cencosud.cl.jumboahora.dashboard.presentation.activity.DashboardActivity.initView(DashboardActivity.java:51)
    at com.core.presentation.activity.BaseActivity.onCreate(BaseActivity.java:49)
    at com.core.presentation.activity.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:24)
    at android.app.Activity.performCreate(Activity.java)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
    at android.os.Handler.dispatchMessage(Handler.java)
    at android.os.Looper.loop(Looper.java)
    at android.app.ActivityThread.main(ActivityThread.java)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)

Events

Activity

Screen

Time

com.cencosud.cart.mycart.presentation.activity.CartActivity 24s 791ms

Exception 

Detail:
  • java.text.ParseException: Unparseable date: "2020-10-26 07:00:00"
    at java.text.DateFormat.parse(DateFormat.java)
    at com.cencosud.frameworks.commonsv1.utlis.GeneralUtils.formatStringToDate(GeneralUtils.java:258)
    at com.cencosud.frameworks.commonsv1.cms.commons.data.repository.mapper.ContentEntityMapper.map(ContentEntityMapper.java:33)
    at com.cencosud.frameworks.commonsv1.cms.commons.data.repository.mapper.ContentEntityMapper.map(ContentEntityMapper.java:14)
    at com.core.data.repository.mapper.Mapper.map(Mapper.java:24)
    at com.cencosud.frameworks.commonsv1.cms.commons.data.repository.CmsOffersRepositoryImp.lambda$getPreCheckoutOffers$0$CmsOffersRepositoryImp(CmsOffersRepositoryImp.java:31)
    at com.cencosud.frameworks.commonsv1.cms.commons.data.repository.-$$Lambda$CmsOffersRepositoryImp$uaGRLDTl220WkCeBgfT5hv_SfC4.apply(Unknown Source:4)
    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:57)
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:51)
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
    at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:43)
    at io.reactivex.Observable.subscribe(Observable.java:12267)
    at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
    at io.reactivex.internal.operators.observable.ObservableMap.subscribeActual(ObservableMap.java:32)
    at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
    at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java)
    at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java)
    at java.lang.Thread.run(Thread.java)
    java.text.ParseException: Unparseable date: "2020-11-08 23:59:00"
    at com.cencosud.frameworks.commonsv1.cms.commons.data.repository.mapper.ContentEntityMapper.map(ContentEntityMapper.java:34)

Events

Activity

Screen

Time

com.cencosud.cart.mycart.presentation.activity.CartActivity 2m 40s

Exception 

Detail:
  • RecyclerView: No adapter attached; skipping layout

Events

Activity

Screen

Time

com.cencosud.cart.mycart.presentation.activity.CartActivity 27s 354ms

Exception 

Detail:
  • java.lang.NullPointerException: The mapper returned a null ObservableSource
    at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
    at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:121)
    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:51)
    at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
    at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:43)
    at io.reactivex.Observable.subscribe(Observable.java:12267)
    at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
    at io.reactivex.internal.operators.observable.ObservableMap.subscribeActual(ObservableMap.java:32)
    at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55)
    at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
    at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
    at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
    at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java)
    at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java)
    at java.lang.Thread.run(Thread.java)

Events

Activity

Screen

Time

com.cencosud.cart.mycart.presentation.activity.CartActivity 27s 354ms

Application not responding (ANR)

If your app stops responding, users get a dialog that allows them to wait or close the app. When these dialogs appear, they're known as 'Application not responding' errors or ANRs. Android will display the ANR dialog when it detects one of the following conditions:

  • No response to an input event (such as key press or screen touch events) within 5 seconds.

  • A BroadcastReceiver hasn't finished executing within 10 seconds.

ANR Dump Logs

When your app stops responding (ANR) Android generates dump files containing CPU and Threads information. This enables devs to identify CPU usage on each process at the moment that the app freezes and provides a snapshot containing threads information (thread, mutex and stack information).

ANR: None

Device

HUAWEI ANE-LX3 (9):
 
 
HUAWEI ANE-LX3
Android 9
 
 

Logs

 

Test Environment

Android version:

Manufacturer:

Model:

CPU Architecture:

Dalvik heap size limit:

Dalvik large heap size limit:

App Information

Default Label: Jumbo App

Version Code: 78

Version Name: 1.8.6

Package: com.cencosud.cl.jumboahora

Launch Activity: com.cencosud.cl.jumboahora.splash.presentation.activity.SplashActivity

Use large heap: false

Debuggable: false

Permissions

android.permission.INTERNET
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.

android.permission.ACCESS_NETWORK_STATE
Allows the app to view information about network connections such as which networks exist and are connected.

android.permission.ACCESS_FINE_LOCATION
Allows the app to get your precise location using the Global Positioning System (GPS) or network location sources such as cell towers and Wi-Fi. These location services must be turned on and available to your device for the app to use them. Apps may use this to determine where you are, and may consume additional battery power.

android.permission.WRITE_EXTERNAL_STORAGE
Allows the app to write to the SD card.

android.permission.READ_EXTERNAL_STORAGE
Allows the app to read the contents of your SD card.

android.permission.GET_ACCOUNTS
Allows the app to get the list of accounts known by the phone. This may include any accounts created by applications you have installed.

android.permission.READ_PROFILE
Allows the app to read personal profile information stored on your device, such as your name and contact information. This means the app can identify you and may send your profile information to others.

android.permission.READ_CONTACTS
Allows the app to read data about your contacts stored on your phone, including the frequency with which you've called, emailed, or communicated in other ways with specific individuals. This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.

android.permission.WAKE_LOCK
Allows the app to prevent the phone from going to sleep.

com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE
Unknown / User defined

com.google.android.c2dm.permission.RECEIVE
Allows apps to accept cloud to device messages sent by the app's service. Using this service will incur data usage. Malicious apps could cause excess data usage.

android.permission.ACCESS_WIFI_STATE
Allows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices.

Messages

Screen Information

ß orientation:

Screen resolution:

Layout size:

Display density:

LOpenGL ES:

Activities

Not Found

App Compatibility

Min API Level: 21

Target API Level: 29

Max API Level: Undefined

Native CPU architectures: No 

Screens: small  normal  large  xlarge 

Support Any Density: true

Densities: 120  160  240  320  480  640  65534 

Locale: --_--  

Receivers

Not Found

Services

Not Found

Activities
Layout 1 1

Activities

Android Activities are one of the most important part of application's overall lifecycle. The way activities are launched and how developers manage all them together is a fundamental part of the platform's application model.
In order to improve performance, developers should try to provide interface to users avoiding create several activities and consuming resources when is not needed.

Activities stack

Creating multiple activities causes Android to put them into the 'Back Stack' in order to save states such as text form, scroll position and other data. Multiple tasks can be held in the background at once. However, if the user is running many background tasks at the same time, the system might begin destroying background activities in order to recover memory, causing the activity states to be lost.

Activities on Back Stack: 1

Device

Value

HUAWEI ANE-LX3 (9): 1
Activities amount

All non-trivial Android applications are made up of a number of different functional screens and hence multiple activities. Although multiple screens allows us to build complex applications, they also require careful management. In particular, developers need to deal with activities that are no longer visible since Android OS will place them into the background and may terminate activities that are not used for a period of time. The use of multiple activities also requires us to think about the interaction and navigation model that the user will experience.

Activities: 0

Device

Value

HUAWEI ANE-LX3 (9): 0

Layout

Layouts are a key part of Android applications that directly affect the user experience. If poorly implemented, your layout can lead to a memory hungry application with slow UIs.

UI controls

Too many controls on the screen 158  (Moderate Limit: 50 Warning Limit: 100)

It seems that some activities has a significant amount of UI controls. It is recommended to take a look at UI design and consider write a custom ViewGroup.

Events

Activity

Screen

Issue

Time

Value

.dashboard.presentation.activity.DashboardActivity 4m 10s 157
.dashboard.presentation.activity.DashboardActivity 3m 14s 157
com.cencosud.cart.mycart.presentation.activity.CartActivity 2m 40s 148
.dashboard.presentation.activity.DashboardActivity 3m 51s 155
.dashboard.presentation.activity.DashboardActivity 1m 52s 157
.dashboard.presentation.activity.DashboardActivity 2m 55s 148
.dashboard.presentation.activity.DashboardActivity 2m 19s 158
.dashboard.presentation.activity.DashboardActivity 1m 40s 80
Nested layouts

It is a common misconception that using the basic layout structures leads to the most efficient layouts. However, each widget and layout you add to your application requires initialization, layout, and drawing.

Nested layouts level is medium 19  (Moderate Limit: 10 Warning Limit: 20)

Take a look at nested layout considering for example that Linear Layouts using weight parameter requires the child to be measured twice: Initialization, layout and drawing become slower.

Events

Activity

Screen

Issue

Time

Value

.dashboard.presentation.activity.DashboardActivity 58s 525ms 17
.dashboard.presentation.activity.DashboardActivity 4m 10s 19
.dashboard.presentation.activity.DashboardActivity 3m 14s 19
com.cencosud.cart.mycart.presentation.activity.CartActivity 2m 40s 19
.dashboard.presentation.activity.DashboardActivity 3m 51s 19
.dashboard.presentation.activity.DashboardActivity 1m 52s 19
.dashboard.presentation.activity.DashboardActivity 30s 202ms 17
.dashboard.presentation.activity.DashboardActivity 2m 55s 19
.dashboard.presentation.activity.DashboardActivity 1m 18s 17
.dashboard.presentation.activity.DashboardActivity 1m 27s 14
.dashboard.presentation.activity.DashboardActivity 2m 19s 19
.dashboard.presentation.activity.DashboardActivity 1m 40s 15