{ "id": "172155", "key": "TIMOB-26346", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2018-08-31T12:51:33.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [], "versions": [ { "id": "17609", "description": "", "name": "Release 7.0.0", "archived": false, "released": true, "releaseDate": "2017-12-07" } ], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-11-14T23:40:43.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "(Raised via Slack a few times so far)\r\n\r\nI get a lot of\r\n{code}\r\n[INFO] : Choreographer: Skipped 31 frames! The application may be doing too much work on its main thread.\r\n{code}\r\n\r\nIf I press a button to open a new page, there is a slight delay, if I set run on main thread to {{false}} its much smoother.\r\n\r\niOS seems to have no problems with run on main thread set to {{true}}.\r\n\r\nNote (Hans): This is rather meant to be an investigation ticket rather than expecting a concrete fix. We need to verify the performance differences and plan something for SDK 8.0.0, since main-thread will be the default moving forward. For iOS, the kroll-thread will be removed completely, but it seem to play fine by now.", "attachment": [], "flagged": false, "summary": "Android: Apps are notable slower when using main-thread", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "443556", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Why was this removed from 8.0.0? There should be an investigation on the performance impact, since 8.0.0+ will only allow the main-thread to be used. By now, this is a blocker for updating to 8.0.0.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-11-14T07:26:09.000+0000", "updated": "2018-11-14T07:26:09.000+0000" }, { "id": "443594", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "If someone is running into a performance issue, then it's likely something very specific. A \"nebulous\" ticket like this isn't very helpful.\r\n\r\nFor example, if the APK is multidexed, then it will have a slow startup time on Android 4.x since OS versions older than 5.0 do not support multidexed apps. This means on Android 4.x, the app has to load the multiple dex libraries on app startup via software which is a long blocking operation. We can't fix that. You can only avoid it by either reducing the number of JARs or setting the min supported OS version to 5.0.\r\n\r\nAnother example is image loading is blocking for all APIs other than {{ImageView.image}} on both Android and iOS. Such as \"backgroundImage\". If you use \"backgroundImage\" a lot, then consider using an {{ImageView}} instead for async image loading.\r\n\r\nAnd we're making optimizations all the time. We've optimized internal APK file access in 7.5.0. And we've added an async version of {{WebView.evalJS()}} in 8.0.0.\r\n\r\nDo you have anything specific you want to share with us?", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-11-14T19:26:52.000+0000", "updated": "2018-11-14T19:26:52.000+0000" }, { "id": "443609", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Also, you said you see a performance issue when opening windows. Does this only happen when analytics are enabled?\r\n\r\nWe're currently posting analytics data on Android every time a window has been opened, closed, suspended, or resumed. We'll be changing this behavior in Titanium 8.0.0 to only report analytics when suspending/resuming the app like iOS instead. See: [TIMOB-26535]\r\n\r\nI'm curious if this is what you're seeing. Although, I'm not seeing a performance difference. Window open/close is fast for me.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-11-14T23:40:43.000+0000", "updated": "2018-11-14T23:40:43.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }