{ "id": "102764", "key": "TIMOB-11282", "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": [ { "id": "14164", "description": "Release 3.0.2", "name": "Release 3.0.2", "archived": true, "released": true, "releaseDate": "2013-02-19" }, { "id": "14162", "description": "Release 3.1.0", "name": "Release 3.1.0", "archived": true, "released": true, "releaseDate": "2013-04-16" }, { "id": "15079", "description": "2013 Sprint 02 API", "name": "2013 Sprint 02 API", "archived": true, "released": true, "releaseDate": "2013-01-28" }, { "id": "14812", "description": "2013 Sprint 02", "name": "2013 Sprint 02", "archived": true, "released": true, "releaseDate": "2013-01-28" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2013-01-29T00:33:20.000+0000", "created": "2012-10-05T20:40:21.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "Android", "Performance", "TableView", "api", "insight" ], "versions": [], "issuelinks": [ { "id": "29353", "type": { "id": "10122", "name": "Gantt: start-finish", "inward": "is triggered by", "outward": "is triggering" }, "outwardIssue": { "id": "115462", "key": "TIMOB-14105", "fields": { "summary": "Android: toImage() does not work if applied to ImageView", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "25989", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "110008", "key": "TIMOB-12816", "fields": { "summary": "Android: Clean up the Image View", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2014-06-19T12:42:37.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "h3. The problem\r\nLoading a large tableview with remote images makes the scrolling really slow. If the images that are visible have not been downloaded, the app becomes almost unresponsive until they are downloaded.\r\n\r\nh3. Details\r\nThe sample code contains a table view with about 200 rows. These rows are separated by various sections, 10 of them. Run the code in app.js, once the table loads, scroll down as fast as possible, and if possible. You'll notice the performance is not there. Even when the images are loaded, the scrolling is still not close to native.\r\n\r\nh3. The code\r\nThe code is posted in a private comment, as it contains confidential image urls provided by the customer.", "attachment": [ { "id": "33323", "filename": "ddms5847326689925497627.trace", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-07T18:28:19.000+0000", "size": 4033624, "mimeType": "application/octet-stream" } ], "flagged": false, "summary": "Android TableView with remote images is very slow", "creator": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "subtasks": [ { "id": "108686", "key": "TIMOB-12462", "fields": { "summary": "Backport to 3_0_X: TIMOB-11282", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true } } } ], "reporter": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "environment": "Ti SDK 2.1.3.GA\r\nTested on Android 2.1.3 device", "comment": { "comments": [ { "id": "222401", "author": { "name": "mbelkin", "key": "mbelkin", "displayName": "Michael Belkin", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I've been fighting this problem for ages. I tried caching the remote images and loading them with the native path but this only marginally improved things. It seems that Ti on Android just can't handle a tableview with lots of images, due primarily to memory management. Even modifying tableview layout 2 in kitchen sink causes this.\r\n\r\nI really think this is a crippling feature for titanium and I've seriously considered going native because of it (my app is pretty much all tableviews with images). Any fix or improvement would be tremendously appreciated!", "updateAuthor": { "name": "mbelkin", "key": "mbelkin", "displayName": "Michael Belkin", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-10-06T20:21:22.000+0000", "updated": "2012-10-06T20:21:22.000+0000" }, { "id": "225989", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I tried out the sample app on Samsung Galaxy S2 and also Samsung Galaxy S3,\nover the carrier data network in both cases. Performance didn't seem bad to\nme, and scrolling seemed reasonable. I did notice that images were filled in\nafter the table had scrolled -- that's expected here.\n\nCan you give me more details about where the slowdown was seen? What is the\nhardware, and was it on a very slow network? \n\n", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-02T17:13:29.000+0000", "updated": "2012-11-02T17:13:29.000+0000" }, { "id": "226125", "author": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "body": "The issue has been seen on both Galaxy S2 and S3 phones regardless of network speed. The apps we build have more than one view before getting to the list and even after the images are loaded the scrolling is sub par (even on galaxy S3 which is very powerful). I have yet to be able to get native like scrolling speeds with android with images in the table view. \r\n\r\nI know it can be faster as native apps on the S2 (like imdb) scroll without any jerking or stuttering. ", "updateAuthor": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "created": "2012-11-05T15:10:15.000+0000", "updated": "2012-11-05T15:10:15.000+0000" }, { "id": "226545", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Attaching a ddms trace file, it was made by profiling on the Android 2.2 emulator.", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-07T18:28:19.000+0000", "updated": "2012-11-07T18:28:19.000+0000" }, { "id": "226546", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "These are some highlights from the ddms trace file -- some\nof the time-consuming methods in percent:\n\nListView.fillDown 75 %\n\nTiTableView.getView 58 %\n\nTiTableViewRowProxyItem.createControls 54%\n\nTiUIImageView.processProperties 50 %\n\nTiUIImageView.setImage 43 %\n\nTiResponseCache.peek 18 %\n\n", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-07T18:32:45.000+0000", "updated": "2012-11-07T18:32:45.000+0000" }, { "id": "226553", "author": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "body": "Karl help me understand these numbers. Does it show where the scrolling performance is being hindered? \r\n\r\nHow could the table view have scrolling issues once the native controls are rendered? Is TiTableViewRowProxyItem.createControls 54% taking too long?", "updateAuthor": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "created": "2012-11-07T19:01:36.000+0000", "updated": "2012-11-07T19:01:36.000+0000" }, { "id": "226566", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "\r\nEach time the table scrolls and a new row is added to the bottom,\r\nthe UI thread calls getView(). This blocks the UI thread from\r\ndoing anything else until it returns. The profiling data says that \r\neach call to getView() is taking about 0.8 seconds. It didn't feel\r\nlike it was quite that slow when I ran the test on the emulator, by \r\nthe way.\r\n\r\nHandling of the images is taking a lot of time.\r\n\r\nBetter performance in getView() would go a long way towards fixing\r\nTableView performance.", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-07T19:30:51.000+0000", "updated": "2012-11-07T21:16:06.000+0000" }, { "id": "226723", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Pull request https://github.com/appcelerator/titanium_mobile/pull/3395\n\nNote that you'll need to use a slow device in order to see the\nslowness here. A good choice is the Android 2.2 emulator. If you\nuse a fast device you won't see the problem.\n\n", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-08T17:54:41.000+0000", "updated": "2012-11-08T17:54:41.000+0000" }, { "id": "227069", "author": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "body": "Karl is there a way I can pull what you have done into a custom image view module for android to test this out?", "updateAuthor": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "created": "2012-11-12T22:23:39.000+0000", "updated": "2012-11-12T22:23:39.000+0000" }, { "id": "227070", "author": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "body": "How did the change to made effect the performance?", "updateAuthor": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "created": "2012-11-12T22:24:36.000+0000", "updated": "2012-11-12T22:24:36.000+0000" }, { "id": "227582", "author": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I've updated the pull request at https://github.com/appcelerator/titanium_mobile/pull/3395.\nIt's ready for review.", "updateAuthor": { "name": "krowley", "key": "krowley", "displayName": "Karl Rowley", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-15T21:35:34.000+0000", "updated": "2012-11-15T21:35:34.000+0000" }, { "id": "229501", "author": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "body": "Any way this can be added to 3.0?", "updateAuthor": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "created": "2012-12-03T04:07:25.000+0000", "updated": "2012-12-03T04:07:25.000+0000" }, { "id": "229502", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "@Darren--Unlikely, as we're past our 3.0 code freeze date. However, it will go in 3.0.1, and you can use it now off of the \"master\" branch.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-12-03T04:09:20.000+0000", "updated": "2012-12-03T04:09:20.000+0000" }, { "id": "233676", "author": { "name": "ktecho", "key": "ktecho", "displayName": "Luis Miguel García", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I don't know what \"Release 3.1.0, 2012 Sprint 24, 2012 Sprint 24 API\" means, but, is this not going to be fixedin 3.0.1? This is a major issue to us too.", "updateAuthor": { "name": "ktecho", "key": "ktecho", "displayName": "Luis Miguel García", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-01-09T09:25:05.000+0000", "updated": "2013-01-09T09:25:05.000+0000" }, { "id": "235815", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The RejectedExecutionException described in Vishal's comment happens when workqueue in the ThreadPoolExecutor is full and the Executor cannot accept more tasks. This only happens between DONUT (API 4) and HONEYCOMB (API 11) because in those API levels the [execute()|http://developer.android.com/reference/android/os/AsyncTask.html#execute(Params...)] function schedules the task on a queue for a pool of threads allowing multiple tasks to operate in parallel. Starting HONEYCOMB, tasks are executed on a single thread to avoid common application errors caused by parallel execution.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-01-24T23:41:12.000+0000", "updated": "2013-01-24T23:41:12.000+0000" }, { "id": "235816", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR to fix RejectedExecutionException: https://github.com/appcelerator/titanium_mobile/pull/3780", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-01-24T23:45:10.000+0000", "updated": "2013-01-24T23:45:10.000+0000" }, { "id": "236648", "author": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "body": "I would like to see this in 3.0.2. Very important to improve table view performance", "updateAuthor": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "created": "2013-01-30T20:59:59.000+0000", "updated": "2013-01-30T20:59:59.000+0000" }, { "id": "236649", "author": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "body": "Darren, \nPia made this fix for 3.0.2 as well :-)\n\nBest,\nMauro ", "updateAuthor": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "created": "2013-01-30T21:02:39.000+0000", "updated": "2013-01-30T21:02:39.000+0000" }, { "id": "237476", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Added 3.0.2 fixVersion after speaking with Vishal. Ticket was back ported to 3.0.2.", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-02-06T18:56:09.000+0000", "updated": "2013-02-06T18:56:09.000+0000" }, { "id": "237873", "author": { "name": "lokeshchdhry", "key": "lokeshchdhry", "displayName": "Lokesh Choudhary", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified the issue and found it to be slightly choppy but nothing which stands out.\nThus closing the issue. \n\nEnvironment:\nTi Studio : 3.0.2.201302041757\nTi BB SDK : 3.0.2.v20130207164659\nMac OSX : 10.8.2\nCLI Version : 3.0.24-cr\nSamsung galaxy s3 -- android 4.0.4\nNexus 4 -- android 4.2", "updateAuthor": { "name": "lokeshchdhry", "key": "lokeshchdhry", "displayName": "Lokesh Choudhary", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2013-02-09T00:23:54.000+0000", "updated": "2013-02-09T00:23:54.000+0000" }, { "id": "239042", "author": { "name": "banzaimobile", "key": "banzaimobile", "displayName": "Banzai Mobile", "active": true, "timeZone": "Europe/Berlin" }, "body": "Sorry to disagree, but behavior as I see it in 3.0.2 is even worse than the original problem.\r\n\r\nNow, rows with the same className seem to be recycled by FIRST painting the row with ALL its old content, then updating with the correct content. This is hugely noticeable if you have a listing of images (e.g. in a shopping app): you scroll down and see again the first block of rows, then they change under your eyes.\r\n\r\nIf you try removing the className property, no row content is ever preserved, so if you scroll down and then back up, rows that were already fully painted start again from white.\r\n\r\nCompare with 2.1.4 behavior, where revealed rows start as white, but after painting they stay even after scrolling out. This is what is typically expected as standard experience.\r\n\r\nPlease consider reverting to old behavior, or at least providing a property combination that allows the same effect.\r\n", "updateAuthor": { "name": "banzaimobile", "key": "banzaimobile", "displayName": "Banzai Mobile", "active": true, "timeZone": "Europe/Berlin" }, "created": "2013-02-20T17:08:43.000+0000", "updated": "2013-02-20T17:08:43.000+0000" }, { "id": "239114", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "@Banzai...can you please provide a snippet of code that demonstrates the problem?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-02-20T21:11:14.000+0000", "updated": "2013-02-20T21:11:14.000+0000" }, { "id": "239221", "author": { "name": "banzaimobile", "key": "banzaimobile", "displayName": "Banzai Mobile", "active": true, "timeZone": "Europe/Berlin" }, "body": "@Ingo, I see it should have been reported already in a premium support ticket by Brian Knorr (mentioned at the bottom of this alloy discussion: https://groups.google.com/forum/?fromgroups=#!topic/appc-ti-alloy/OswZqAoXTpg).\r\n\r\nAnyway, on Android 3.0.2 any tableView with remote images (if they are as big as the row the effect is more evident) and more than 10-15 rows will exhibit the behavior:\r\n- same className for all rows -> revealed rows appear as copies of rows previously on screen (i.e. if screen is tall enough for 5 rows, the 6th will slide in with contents of row 1, 7th with row 2, etc, then quickly update to its correct content); \r\n- no className -> rows that scroll out of view start again empty when scrolling back in.", "updateAuthor": { "name": "banzaimobile", "key": "banzaimobile", "displayName": "Banzai Mobile", "active": true, "timeZone": "Europe/Berlin" }, "created": "2013-02-21T13:14:32.000+0000", "updated": "2013-02-21T13:14:32.000+0000" }, { "id": "239342", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Created TIMOB-12816 for the issues reported above.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-02-21T23:53:31.000+0000", "updated": "2013-02-21T23:53:31.000+0000" }, { "id": "239394", "author": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "body": "I can confirm that this was not properly fixed. Not only that it makes the table view completely useless and MUCH slower than 3.0.0 GA. Cannot use this build.", "updateAuthor": { "name": "dhaligas", "key": "dhaligas", "displayName": "Darren Haligas", "active": true, "timeZone": "America/Chicago" }, "created": "2013-02-22T15:58:34.000+0000", "updated": "2013-02-22T15:58:34.000+0000" }, { "id": "239400", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "@Darren. Thank you for the update. Can you please attach a test case that demonstrates the problem for you?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-02-22T16:49:22.000+0000", "updated": "2013-02-22T16:49:22.000+0000" }, { "id": "245182", "author": { "name": "kenthao", "key": "kenthao", "displayName": "kent hao", "active": true, "timeZone": "America/Los_Angeles" }, "body": "i have the same problem in sdk3.0.2, the tableview with images scroll uneasy, of course classname is used", "updateAuthor": { "name": "kenthao", "key": "kenthao", "displayName": "kent hao", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-02T14:47:54.000+0000", "updated": "2013-04-02T14:47:54.000+0000" }, { "id": "245183", "author": { "name": "kenthao", "key": "kenthao", "displayName": "kent hao", "active": true, "timeZone": "America/Los_Angeles" }, "body": "by the way, i already cache the remote images before the table view is loaded", "updateAuthor": { "name": "kenthao", "key": "kenthao", "displayName": "kent hao", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-02T14:49:14.000+0000", "updated": "2013-04-02T14:49:14.000+0000" }, { "id": "245185", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "For all those commenting on the above issues, can you please try the latest CI of 3.1.0 from the master branch. That should have addressed your concerns.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-02T14:52:41.000+0000", "updated": "2013-04-02T14:52:41.000+0000" }, { "id": "245388", "author": { "name": "kenthao", "key": "kenthao", "displayName": "kent hao", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Thanks for your info. i'm sorry, i've never used a CI package, could you tell me where i can get it?", "updateAuthor": { "name": "kenthao", "key": "kenthao", "displayName": "kent hao", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-03T01:57:33.000+0000", "updated": "2013-04-03T01:57:33.000+0000" }, { "id": "245389", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Sure. Read here: http://docs.appcelerator.com/titanium/2.0/#!/guide/Installing_Titanium_SDK_Continuous_Builds", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-03T02:02:04.000+0000", "updated": "2013-04-03T02:02:04.000+0000" } ], "maxResults": 44, "total": 44, "startAt": 0 } } }