Git Product home page Git Product logo

amphitheatre's Introduction

Amphitheatre

Amphitheatre is an Android TV project aimed to bring you the best of your content in a simple and visually appealing fashion. It connects to your network shares, organizes and serves videos to an Android capable media player.

Amphitheatre

Features

  • Indexes movie and TV show files on your SMB or CIFS shares.
  • View movie and TV show poster art and details.
  • Quickly search through your video collection.

Dependencies

The Movie Database (TMDb)

Amphitheatre uses The Movie Database (TMDb) in order to fetch movie information.

You'll need to sign up as a developer and add your TMDb API Key to your ~/.gradle/gradle.properties:

TMDB_API_KEY=<your api key>

You'll also need to sign up for a TVDB API Key and add it to your ~/.gradle/gradle.properties:

TVDB_API_KEY=<your api key>

Media Player

Amphitheatre does not play the actual video file but serves it to a capable media player application. So you'll need to install a media player as well. MXPlayer is a great player worth checking out.

Contributing

All contributions are welcome!

License

Copyright 2014 Jerrell Mardis

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

amphitheatre's People

Contributors

eyedol avatar jakewharton avatar jerrellmardis avatar rharter avatar thiagolocatelli avatar w9jds avatar

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amphitheatre's Issues

Improve Share discovery experience

I don't think the current share discovery implementation is the best for the "10ft environment". Currently, it lists all the users share folders in a Spinner, excludes top-level share folders and does not allow the user to input their credentials before it attempts to auto-discover shares.

Suggestions to improve the experience

  • First, give the user a choice on whether to look for shared network folders or enter an IP Address/Name manually. I'm thinking 2 big buttons or icons in the center of the dialog.
  • If the user chooses to enter their IP Address/Name manually, then the form would slide out to the left and a new form would slide in from the right. The new form would be similar to the existing form we have now, basically 3 EditText fields and a primary action button of "Add" and a secondary action "Cancel". The second form would also have a back button in the top left of the form.
  • If the user chooses to have the app auto-discover files, then the current form in the dialog should slide out to the left (giving the user an indication that they can always go back), a new form would then slide in from the right with an option to choose "Guest" or enter their username and password. Every form going forward should have a Back button in the top left of the form, the primary action button (i.e. Next/Submit) in the bottom right with a secondary action button to the left of it (i.e. Cancel).
  • After they've completed the form and clicked the Next button in the bottom right, a ListView with the first level of directories is shown. Clicking on a list item will again have the same animation of the current form sliding out to the left and the new ListView sliding in from the right. The new ListView would list all the directories under the previous directory selected.
  • Once the user has either entered an address manually or selected one via the "file chooser" they can proceed with adding the share by clicking "Add".

Thoughts?

/cc @rharter @JakeWharton

Fails To Update Library When Samba Shared Folder Has Only One Of The Supported Files In It.

If you have one movie( one of the supported files ) in your samba shared folder, app fails to update the library when you add a source.

To produce this, add a source with a shared folder that has only one supported file in it. See a toast message show up saying it failed to update the library. I have attached the Exception thrown as well and a sample directory structure

Public
`-- Eat
    `-- Eat\ Pray\ Love.mkv

Exception:

08-08 09:11:03.475: W/System.err(3001): java.lang.IllegalArgumentException: Size must be greater than 0
08-08 09:11:03.475: W/System.err(3001):     at org.apache.commons.collections4.ListUtils.partition(ListUtils.java:659)
08-08 09:11:03.475: W/System.err(3001):     at com.jerrellmardis.amphitheatre.task.GetFilesTask.onPostExecute(GetFilesTask.java:77)
08-08 09:11:03.475: W/System.err(3001):     at com.jerrellmardis.amphitheatre.task.GetFilesTask.onPostExecute(GetFilesTask.java:37)
08-08 09:11:03.475: W/System.err(3001):     at android.os.AsyncTask.finish(AsyncTask.java:632)
08-08 09:11:03.475: W/System.err(3001):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
08-08 09:11:03.475: W/System.err(3001):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
08-08 09:11:03.475: W/System.err(3001):     at android.os.Handler.dispatchMessage(Handler.java:102)
08-08 09:11:03.475: W/System.err(3001):     at android.os.Looper.loop(Looper.java:135)
08-08 09:11:03.475: W/System.err(3001):     at android.app.ActivityThread.main(ActivityThread.java:5070)
08-08 09:11:03.475: W/System.err(3001):     at java.lang.reflect.Method.invoke(Native Method)
08-08 09:11:03.476: W/System.err(3001):     at java.lang.reflect.Method.invoke(Method.java:372)
08-08 09:11:03.476: W/System.err(3001):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
08-08 09:11:03.476: W/System.err(3001):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)

When files.size() is 1 this files.size() / maxPoolSize; calculation returns 0 and it seems ListUtils.partition expects a value greater than 0 for the partitionSize

Add more categories to the left nav menu

More categories are needed in order to help users with large libraries better navigate through their content. Similar to the Google Play Movies app on Android TV Amphitheatre should provide categories for the following: Popular Movies, Popular TV Shows, New Movie Releases, Recommended for You, Movies by Year, TV Genres, Movies Genres and more.

For now this issue should remain a discussion thread until the necessary categories are determined. The decision made here will affect the UI and UX greatly and I want to make sure the UI remains as simple as possible.

Thoughts?

Samba Share Discovery

I'm not sure how it's done, but my Boxee Box can automatically discover my exposed Samba shares on the network.

Too Many Files in Server Crashes with OOM Exception

I have a pretty large hard drive full of media that I'm connecting using SMB. After about 10 minutes of traversing, the app crashed with the attached exception.

It seems like the problem is keeping all the files stored in the variables at the top of the VideoUtils.getFilesFromDir method.

Currently working on a new method of traversing library to be memory safe

List<SmbFile> results 
Set<SmbFile> seen
Deque<SmbFile> queue

 06-08 00:45:24.891  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ Throwing       
OutOfMemoryError "Failed to allocate a 28 byte allocation with 0 free bytes and 3GB until OOM" 
(recursive case)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ "AsyncTask #4" 
prio=5 tid=26 Runnable
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ | group="main"    
sCount=0 dsCount=0 obj=0x132188e0 self=0xb8b4f478
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ | sysTid=13915 
nice=10 cgrp=apps/bg_non_interactive sched=0/0 handle=0xb8b4f850
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ | state=R schedstat= 
( 0 0 0 ) utm=8300 stm=2760 core=1 HZ=100
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ | stack=0xa132c000-   
0xa132e000 stackSize=1036KB
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ | held mutexes= 
"mutator lock"(shared held)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at 
java.lang.String.replace(String.java:1195)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at    
jcifs.smb.SmbFile.getUncPath0(SmbFile.java:1198)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at jcifs.smb.SmbFile.
<init>(SmbFile.java:617)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at jcifs.smb.SmbFile.
<init>(SmbFile.java:603)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at jcifs.smb.SmbFile.   
<init>(SmbFile.java:624)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at 
jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:2018)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at 
jcifs.smb.SmbFile.doEnum(SmbFile.java:1745)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at 
jcifs.smb.SmbFile.listFiles(SmbFile.java:1722)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at    
jcifs.smb.SmbFile.listFiles(SmbFile.java:1655)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at 
com.jerrellmardis.amphitheatre.util.VideoUtils.getFilesFromDir(VideoUtils.java:311)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at    
com.jerrellmardis.amphitheatre.task.DownloadTaskHelper.getFiles(DownloadTaskHelper.java:62)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at   
com.jerrellmardis.amphitheatre.task.GetFilesTask.doInBackground(GetFilesTask.java:82)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at    
com.jerrellmardis.amphitheatre.task.GetFilesTask.doInBackground(GetFilesTask.java:42)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at  
android.os.AsyncTask$2.call(AsyncTask.java:288)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at   
java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at  
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ at    
java.lang.Thread.run(Thread.java:818)
06-08 00:45:24.893  13780-13915/com.jerrellmardis.amphitheatre.dev E/art﹕ [ 06-08 00:45:25.108 
13780:13799 I/art      ]
Alloc partial concurrent mark sweep GC freed 2229092(163MB) AllocSpace objects, 0(0B) LOS  
objects, 36% free, 28MB/44MB, paused 749us total 217.836ms
06-08 00:45:25.110  13780-13806/com.jerrellmardis.amphitheatre.dev I/art﹕ 
WaitForGcToComplete blocked for 219.665ms for cause Background
06-08 00:45:25.111  13780-13915/com.jerrellmardis.amphitheatre.dev I/art﹕ 
WaitForGcToComplete blocked for 214.654ms for cause Alloc
06-08 00:45:25.138  13780-13915/com.jerrellmardis.amphitheatre.dev E/AndroidRuntime﹕ FATAL 
EXCEPTION: AsyncTask #4
Process: com.jerrellmardis.amphitheatre.dev, PID: 13780
java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:300)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)
 Caused by: java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw    
OutOfMemoryError; no stack available
06-08 00:45:25.142     476-1776/? W/ActivityManager﹕ Force finishing activity  
com.jerrellmardis.amphitheatre.dev/com.jerrellmardis.amphitheatre.activity.BrowseActivity
06-08 00:45:25.152  13780-13915/com.jerrellmardis.amphitheatre.dev I/Process﹕ Sending signal. 
PID: 13780 SIG: 9
06-08 00:45:25.245     476-1776/? I/WindowState﹕ WIN DEATH: Window{a3b71c9 u0 
com.jerrellmardis.amphitheatre.dev/com.jerrellmardis.amphitheatre.activity.BrowseActivity}
06-08 00:45:25.354      476-492/? I/ActivityManager﹕ Process com.jerrellmardis.amphitheatre.dev 
(pid 13780) has died

Add watch tracking

The app should keep track of what shows and/or movies the user has watched.

Add Recommended For You category

This category would include recommended movies and tv shows based on the user's watch history. For instance, if a user watched the first episode of Breaking Bad, this section would include the 2nd episode of Breaking Bad. Another scenario would be if the user watched a few Action movies then this would include Action movies or genres that are relevant to the user's most recent watch history.

Share Processing Feedback

A quick user story: After entering my share credentials the following happens:

  1. Toast says "Updating Library", disappears
  2. Screen remains totally blank, no indication that my share was actually added. I think: Hmm, must have incorrectly entered my credentials, so I enter them again.
  3. About 5m later all my content appears.

Some basic progress indicator in the screen corner etc. would be super helpful.

Love your work!

Creating new video with isWatched = true

This comes from DownloadTaskHelper.java

video.setOverview(movie.getOverview());
video.setName(movie.getTitle());
**video.setIsMatched(true);
video.setMovie(movie);

Shouldnt it be false when creating and setting it to true when actually the video's streaming starts?

Is this Project discontinued?

Actually I got interested in this project but there are many bugs.. so if someone can continue this project it would be nice..

Share querying should be async, in background.

After adding a share you should immediately be taken to the main screen with the synchronizing task displayed somewhere secondary (off to a corner). As data comes in, the UI should update to display it.

This changes the pipeline a bit. Right now everything is done in batches. This would require pushing files through the pipeline of discovery, API lookup, and persisted into the DB individually. While likely overall slower, the incremental nature and being able to immediately play with the UI will make that moot.

Improve the look of the Genre category cards

Currently, the Movies/TV Shows by Genre cards are generic gray boxes. These should be replaced with colorful cards with icons similar to Google Play Movies on Android TV and this image.

device-2014-08-29-211732

Switch license to GPLv3

To keep things open, I plan to switch the license from Apache v2 to GPLv3. Any concerns by anyone?

Folder that access is denied breaks app

Let's say I have a computer with multiple drives. I only want to share one. The rest should remain inaccessible. For simplicity, I just want to add the whole IP as a source. If I do that, the app breaks.

There's a line in VideoUtils.getFilesFromDir that creates the error.

Collections.addAll(smbFiles, file.listFiles());

If the directory cannot be accessed, file.listFiles() creates an exception and breaks the whole app.

I'm currently working on a fix that will catch inaccessible directories but still allow accessible directories to be accessed.

isVideoFile needs to work for capitalized file types as well

This was a frustrating issue that came up while debugging.

VideoUtils.isVideoFile works fine if the extension is lowercase, like .mov or .vob. When the extension is capitalized, like .VOB for some reason, the method returns false. This is obviously incorrect.

Below is the fixed method

public static boolean isVideoFile(String s) {
    String[] fileTypes = new String[]{".3gp", ".aaf.", "mp4", ".ts", ".webm", ".m4v", ".mkv", ".divx", ".xvid", ".rec", ".avi", ".flv", ".f4v", ".moi", ".mpeg", ".mpg", /*".mts", ".m2ts",*/ ".ogv", ".rm", ".rmvb", ".mov", ".wmv", /*".iso",*/ ".vob", ".ifo", ".wtv", ".pyv", ".ogm", /*".img"*/};
    int count = fileTypes.length;
    for (int i = 0; i < count; i++)
        if (s.toLowerCase().endsWith(fileTypes[i]))
            return true;
    return false;
}

Movie with no poster

            System.err  W  java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
                        W      at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
                        W      at java.util.ArrayList.get(ArrayList.java:308)
                        W      at com.jerrellmardis.amphitheatre.task.DownloadMovieInfoTask.doInBackground(DownloadMovieInfoTask.java:107
                           )
                        W      at com.jerrellmardis.amphitheatre.task.DownloadMovieInfoTask.doInBackground(DownloadMovieInfoTask.java:38)
                        W      at android.os.AsyncTask$2.call(AsyncTask.java:288)
                        W      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                        W      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                        W      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                        W      at java.lang.Thread.run(Thread.java:818)

Add "Watch Trailer" action to the detail screen.

Add an extra action if trailer is available for Movie or Tv Show. Trailers information can be acquired from TMDB as well. Two options:

  • When discovering video from network and importing it to the local database, download trailer information and save it in another table.
  • When displaying Movie or TV Show details, call TMDB api to get the trailers.

Improve recommendation logic

Currently, the two TV shows with the most recent show airing and the movie with the most recent release date are recommended to the user. This is not ideal. The recommendation logic should also take into consideration whether or not a user has watched the video being recommended, a video's ratings and the user's recent "taste" in videos. For instance, if a user has recently watched a bunch of action movies then Amphitheatre should recommend more action movies.

Share discovery causes a app crash

Once the app starts looking for network shares it crashes.

08-10 11:11:00.290  29388-29837/com.jerrellmardis.amphitheatre.dev E/NetworkSearchTask﹕ Failed to search network for shares.
    jcifs.smb.SmbException: Failed to connect to server
    java.net.UnknownHostException: ..__MSBROWSE__.<01>
            at jcifs.netbios.NbtAddress.doNameQuery(NbtAddress.java:317)
            at jcifs.netbios.NbtAddress.getByName(NbtAddress.java:422)
            at jcifs.netbios.NbtAddress.getByName(NbtAddress.java:403)
            at jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:853)
            at jcifs.smb.SmbFile.connect(SmbFile.java:954)
            at jcifs.smb.SmbFile.connect0(SmbFile.java:883)
            at jcifs.smb.SmbFile.doNetServerEnum(SmbFile.java:1921)
            at jcifs.smb.SmbFile.doEnum(SmbFile.java:1741)
            at jcifs.smb.SmbFile.listFiles(SmbFile.java:1722)
            at jcifs.smb.SmbFile.listFiles(SmbFile.java:1655)
            at com.jerrellmardis.amphitheatre.task.NetworkSearchTask.doInBackground(NetworkSearchTask.java:35)
            at com.jerrellmardis.amphitheatre.task.NetworkSearchTask.doInBackground(NetworkSearchTask.java:16)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
            at jcifs.smb.SmbFile.connect0(SmbFile.java:885)
            at jcifs.smb.SmbFile.doNetServerEnum(SmbFile.java:1921)
            at jcifs.smb.SmbFile.doEnum(SmbFile.java:1741)
            at jcifs.smb.SmbFile.listFiles(SmbFile.java:1722)
            at jcifs.smb.SmbFile.listFiles(SmbFile.java:1655)
            at com.jerrellmardis.amphitheatre.task.NetworkSearchTask.doInBackground(NetworkSearchTask.java:35)
            at com.jerrellmardis.amphitheatre.task.NetworkSearchTask.doInBackground(NetworkSearchTask.java:16)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
08-10 11:11:00.323  29388-29388/com.jerrellmardis.amphitheatre.dev E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.jerrellmardis.amphitheatre.dev, PID: 29388
    java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference
            at java.util.ArrayList.addAll(ArrayList.java:188)
            at android.widget.ArrayAdapter.addAll(ArrayAdapter.java:195)
            at com.jerrellmardis.amphitheatre.fragment.AddSourceDialogFragment.onSharesFound(AddSourceDialogFragment.java:162)
            at com.jerrellmardis.amphitheatre.task.NetworkSearchTask.onPostExecute(NetworkSearchTask.java:98)
            at com.jerrellmardis.amphitheatre.task.NetworkSearchTask.onPostExecute(NetworkSearchTask.java:16)
            at android.os.AsyncTask.finish(AsyncTask.java:632)
            at android.os.AsyncTask.access$600(AsyncTask.java:177)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5070)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)

OOM Synchronizing Very Large Share

I haven't dug into the code yet, but I get OOMs when trying to synchronize my entire share.

                   art  I  Background sticky concurrent mark sweep GC freed 195119(9MB) AllocSpace objects, 0(0B) LOS objects, 230% free,
                            49MB/62MB, paused 1.020ms total 113.741ms
                        I  Background partial concurrent mark sweep GC freed 90603(4MB) AllocSpace objects, 0(0B) LOS objects, 217% free,
                            52MB/64MB, paused 1.538ms total 134.108ms
                        I  Background sticky concurrent mark sweep GC freed 200995(10MB) AllocSpace objects, 0(0B) LOS objects, 185% free
                           , 58MB/72MB, paused 1.338ms total 115.945ms
                        I  Background partial concurrent mark sweep GC freed 77301(4MB) AllocSpace objects, 0(0B) LOS objects, 174% free,
                            62MB/74MB, paused 807us total 147.639ms
                        I  Background sticky concurrent mark sweep GC freed 198383(10MB) AllocSpace objects, 0(0B) LOS objects, 151% free
                           , 68MB/82MB, paused 2.206ms total 104.410ms
                        I  Background partial concurrent mark sweep GC freed 79094(4MB) AllocSpace objects, 0(0B) LOS objects, 142% free,
                            72MB/84MB, paused 2.457ms total 172.552ms
                        I  Background sticky concurrent mark sweep GC freed 195057(10MB) AllocSpace objects, 0(0B) LOS objects, 123% free
                           , 77MB/92MB, paused 2.084ms total 107.538ms
                        I  Background partial concurrent mark sweep GC freed 70351(3MB) AllocSpace objects, 0(0B) LOS objects, 116% free,
                            82MB/94MB, paused 3.815ms total 183.320ms
                        I  Background sticky concurrent mark sweep GC freed 190415(12MB) AllocSpace objects, 0(0B) LOS objects, 104% free
                           , 85MB/102MB, paused 526us total 117.485ms
                        I  Background partial concurrent mark sweep GC freed 195634(9MB) AllocSpace objects, 0(0B) LOS objects, 106% free
                           , 83MB/102MB, paused 568us total 227.757ms
                        I  Background sticky concurrent mark sweep GC freed 201690(14MB) AllocSpace objects, 0(0B) LOS objects, 102% free
                           , 85MB/104MB, paused 1.420ms total 139.381ms
                        I  Background partial concurrent mark sweep GC freed 192194(9MB) AllocSpace objects, 0(0B) LOS objects, 104% free
                           , 83MB/104MB, paused 937us total 212.435ms
   am_on_paused_called  I  [0,com.jerrellmardis.amphitheatre.activity.MainActivity]
   am_on_resume_called  I  [0,com.jerrellmardis.amphitheatre.activity.MainActivity]
                   art  I  Background sticky concurrent mark sweep GC freed 200359(14MB) AllocSpace objects, 0(0B) LOS objects, 102% free
                           , 85MB/104MB, paused 646us total 105.745ms
InputConnectionWrapper  W  getTextAfterCursor on inactive InputConnection
                        W  getTextAfterCursor on inactive InputConnection
                   art  I  Background partial concurrent mark sweep GC freed 1095509(71MB) AllocSpace objects, 0(0B) LOS objects, 163% fr
                           ee, 22MB/104MB, paused 1.233ms total 138.371ms
    InputEventReceiver  W  Attempted to finish an input event but the input event receiver has already been disposed.
                   art  I  Background sticky concurrent mark sweep GC freed 187981(10MB) AllocSpace objects, 0(0B) LOS objects, 143% free
                           , 42MB/104MB, paused 1.111ms total 120.673ms
                        I  Background partial concurrent mark sweep GC freed 97437(5MB) AllocSpace objects, 0(0B) LOS objects, 141% free,
                            44MB/104MB, paused 1.469ms total 117.344ms
                        I  Background sticky concurrent mark sweep GC freed 182008(10MB) AllocSpace objects, 0(0B) LOS objects, 135% free
                           , 50MB/104MB, paused 593us total 108.854ms
                        I  Background partial concurrent mark sweep GC freed 101172(5MB) AllocSpace objects, 0(0B) LOS objects, 133% free
                           , 53MB/104MB, paused 1.841ms total 142.650ms
                        I  Background sticky concurrent mark sweep GC freed 190111(10MB) AllocSpace objects, 0(0B) LOS objects, 127% free
                           , 58MB/104MB, paused 2.895ms total 116.073ms
                        I  Background partial concurrent mark sweep GC freed 96564(5MB) AllocSpace objects, 0(0B) LOS objects, 125% free,
                            61MB/104MB, paused 1.355ms total 148.287ms
                        I  Background sticky concurrent mark sweep GC freed 185972(10MB) AllocSpace objects, 0(0B) LOS objects, 120% free
                           , 67MB/104MB, paused 1.243ms total 118.253ms
                        I  Background partial concurrent mark sweep GC freed 100304(5MB) AllocSpace objects, 0(0B) LOS objects, 117% free
                           , 69MB/104MB, paused 3.862ms total 170.293ms
                        I  Background sticky concurrent mark sweep GC freed 189253(10MB) AllocSpace objects, 0(0B) LOS objects, 111% free
                           , 75MB/104MB, paused 1.399ms total 127.903ms
                        I  Background partial concurrent mark sweep GC freed 99218(5MB) AllocSpace objects, 0(0B) LOS objects, 109% free,
                            78MB/104MB, paused 1.223ms total 191.643ms
                        I  Background sticky concurrent mark sweep GC freed 181007(9MB) AllocSpace objects, 0(0B) LOS objects, 103% free,
                            84MB/104MB, paused 1.818ms total 131.777ms
                        I  Background partial concurrent mark sweep GC freed 96548(5MB) AllocSpace objects, 0(0B) LOS objects, 101% free,
                            86MB/104MB, paused 879us total 209.361ms
                        I  Background sticky concurrent mark sweep GC freed 185298(10MB) AllocSpace objects, 0(0B) LOS objects, 94% free,
                            91MB/106MB, paused 2.418ms total 113.988ms
                        I  Background partial concurrent mark sweep GC freed 100558(5MB) AllocSpace objects, 0(0B) LOS objects, 91% free,
                            94MB/106MB, paused 1.675ms total 230.332ms
                        I  Background sticky concurrent mark sweep GC freed 188504(10MB) AllocSpace objects, 0(0B) LOS objects, 80% free,
                            100MB/114MB, paused 1.880ms total 122.054ms
                        I  Background partial concurrent mark sweep GC freed 107936(5MB) AllocSpace objects, 0(0B) LOS objects, 76% free,
                            103MB/116MB, paused 879us total 262.056ms
                        I  Background sticky concurrent mark sweep GC freed 186559(10MB) AllocSpace objects, 0(0B) LOS objects, 67% free,
                            108MB/124MB, paused 867us total 115.307ms
                        I  Background partial concurrent mark sweep GC freed 91443(4MB) AllocSpace objects, 0(0B) LOS objects, 64% free,
                           112MB/124MB, paused 2.678ms total 281.785ms
                        I  Background sticky concurrent mark sweep GC freed 175120(9MB) AllocSpace objects, 0(0B) LOS objects, 55% free,
                           118MB/132MB, paused 1.643ms total 120.786ms
                        I  Background partial concurrent mark sweep GC freed 93671(5MB) AllocSpace objects, 0(0B) LOS objects, 52% free,
                           122MB/134MB, paused 1.059ms total 295.718ms
                        I  Background sticky concurrent mark sweep GC freed 185456(10MB) AllocSpace objects, 0(0B) LOS objects, 45% free,
                            127MB/142MB, paused 2.133ms total 112.523ms
                        I  Background partial concurrent mark sweep GC freed 97019(5MB) AllocSpace objects, 0(0B) LOS objects, 41% free,
                           131MB/144MB, paused 1.314ms total 325.673ms
                        I  Background sticky concurrent mark sweep GC freed 188392(10MB) AllocSpace objects, 0(0B) LOS objects, 35% free,
                            137MB/152MB, paused 2.996ms total 126.991ms
                        I  Background sticky concurrent mark sweep GC freed 94204(5MB) AllocSpace objects, 0(0B) LOS objects, 33% free, 1
                           40MB/152MB, paused 2.017ms total 102.979ms
                        I  Background partial concurrent mark sweep GC freed 91484(4MB) AllocSpace objects, 0(0B) LOS objects, 32% free,
                           141MB/154MB, paused 1.309ms total 313.886ms
                        I  Background sticky concurrent mark sweep GC freed 188304(10MB) AllocSpace objects, 0(0B) LOS objects, 27% free,
                            146MB/162MB, paused 4.229ms total 108.989ms
                        I  Background partial concurrent mark sweep GC freed 102126(5MB) AllocSpace objects, 0(0B) LOS objects, 24% free,
                            151MB/164MB, paused 3.073ms total 368.522ms
                        I  Background sticky concurrent mark sweep GC freed 184152(10MB) AllocSpace objects, 0(0B) LOS objects, 20% free,
                            156MB/172MB, paused 4.328ms total 123.676ms
                        I  Background partial concurrent mark sweep GC freed 99666(5MB) AllocSpace objects, 0(0B) LOS objects, 17% free,
                           160MB/174MB, paused 5.450ms total 372.174ms
                        I  Background sticky concurrent mark sweep GC freed 173147(9MB) AllocSpace objects, 0(0B) LOS objects, 13% free,
                           167MB/182MB, paused 1.045ms total 131.391ms
                        I  Background partial concurrent mark sweep GC freed 83301(5MB) AllocSpace objects, 0(0B) LOS objects, 11% free,
                           170MB/184MB, paused 6.164ms total 393.221ms
                        I  Background sticky concurrent mark sweep GC freed 188841(10MB) AllocSpace objects, 0(0B) LOS objects, 8% free,
                           176MB/192MB, paused 2.607ms total 129.883ms
                        I  Clamp target GC heap from 197MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 96029(5MB) AllocSpace objects, 0(0B) LOS objects, 5% free, 1
                           81MB/194MB, paused 7.016ms total 446.845ms
                        I  Background sticky concurrent mark sweep GC freed 121110(6MB) AllocSpace objects, 0(0B) LOS objects, 3% free, 1
                           85MB/198MB, paused 3.463ms total 100.827ms
                        I  Clamp target GC heap from 204MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 61308(3MB) AllocSpace objects, 0(0B) LOS objects, 1% free, 1
                           88MB/198MB, paused 1.442ms total 399.028ms
                        I  WaitForGcToComplete blocked for 260.400583ms for cause Alloc
                        I  Clamp target GC heap from 206MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 33268(1875KB) AllocSpace objects, 0(0B) LOS objects, 0% free
                           , 190MB/200MB, paused 3.170ms total 391.827ms
                        I  WaitForGcToComplete blocked for 271.096749ms for cause Alloc
                        I  Clamp target GC heap from 206MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 20601(1149KB) AllocSpace objects, 0(0B) LOS objects, 0% free
                           , 190MB/200MB, paused 2.608ms total 392.369ms
                        I  WaitForGcToComplete blocked for 296.943167ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 13054(736KB) AllocSpace objects, 0(0B) LOS objects, 0% free,
                            191MB/200MB, paused 1.596ms total 410.612ms
                        I  WaitForGcToComplete blocked for 129.988417ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 8279(465KB) AllocSpace objects, 0(0B) LOS objects, 0% free,
                           191MB/200MB, paused 2.848ms total 372.988ms
                        I  WaitForGcToComplete blocked for 313.172ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 5918(339KB) AllocSpace objects, 0(0B) LOS objects, 0% free,
                           191MB/200MB, paused 1.264ms total 366.894ms
                        I  WaitForGcToComplete blocked for 328.605583ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 3772(213KB) AllocSpace objects, 0(0B) LOS objects, 0% free,
                           191MB/200MB, paused 1.079ms total 352.816ms
                        I  WaitForGcToComplete blocked for 345.053750ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 2514(146KB) AllocSpace objects, 0(0B) LOS objects, 0% free,
                           191MB/200MB, paused 2.685ms total 369.069ms
                        I  WaitForGcToComplete blocked for 354.663667ms for cause Alloc
                        I  Background sticky concurrent mark sweep GC freed 1675(88KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 19
                           1MB/200MB, paused 6.716ms total 26.941ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 1389(87KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 1
                           91MB/200MB, paused 2.603ms total 372.877ms
                        I  WaitForGcToComplete blocked for 355.135916ms for cause Alloc
                        I  WaitForGcToComplete blocked for 13.564167ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 1042(54KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 1
                           91MB/200MB, paused 1.888ms total 355.220ms
                        I  WaitForGcToComplete blocked for 348.897084ms for cause Alloc
                        I  WaitForGcToComplete blocked for 13.220750ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 429(22KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 19
                           1MB/200MB, paused 1.525ms total 350.681ms
                        I  WaitForGcToComplete blocked for 345.495167ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 491(35KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 19
                           1MB/200MB, paused 761us total 358.355ms
                        I  WaitForGcToComplete blocked for 351.185917ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 355(19KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 19
                           1MB/200MB, paused 1.391ms total 360.887ms
                        I  WaitForGcToComplete blocked for 356.534334ms for cause Alloc
                        I  WaitForGcToComplete blocked for 11.179083ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 231(11KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 19
                           1MB/200MB, paused 1.403ms total 359.712ms
                        I  WaitForGcToComplete blocked for 358.263249ms for cause Alloc
                        I  WaitForGcToComplete blocked for 14.522500ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 94(5KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200
                           MB, paused 875us total 364.991ms
                        I  WaitForGcToComplete blocked for 365.552167ms for cause Background
                        I  WaitForGcToComplete blocked for 13.421750ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 43(2144B) AllocSpace objects, 0(0B) LOS objects, 0% free, 19
                           1MB/200MB, paused 833us total 363.024ms
                        I  WaitForGcToComplete blocked for 362.263333ms for cause Alloc
                        I  WaitForGcToComplete blocked for 17.425167ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 21(880B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191
                           MB/200MB, paused 748us total 345.078ms
                        I  WaitForGcToComplete blocked for 345.705334ms for cause Alloc
                        I  Alloc sticky concurrent mark sweep GC freed 5(336B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 1.392ms total 16.908ms
                        I  WaitForGcToComplete blocked for 16.947833ms for cause Background
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 11(800B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191
                           MB/200MB, paused 1.206ms total 350.917ms
                        I  WaitForGcToComplete blocked for 349.705417ms for cause Alloc
                        I  WaitForGcToComplete blocked for 6.271083ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 9(304B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191M
                           B/200MB, paused 769us total 362.719ms
                        I  WaitForGcToComplete blocked for 363.050250ms for cause Alloc
                        I  Alloc sticky concurrent mark sweep GC freed 1(32B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB
                           , paused 1.215ms total 8.829ms
                        I  WaitForGcToComplete blocked for 9.051750ms for cause Background
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 9(304B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200
                           MB, paused 1.598ms total 349.239ms
                        I  WaitForGcToComplete blocked for 6.863917ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 1.482ms total 345.494ms
                        I  WaitForGcToComplete blocked for 345.718084ms for cause Alloc
                        I  WaitForGcToComplete blocked for 345.803833ms for cause Background
                        I  WaitForGcToComplete blocked for 11.533917ms for cause Alloc
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 1.381ms total 10.303ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 6(12KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paus
                           ed 1.591ms total 360.025ms
                        I  WaitForGcToComplete blocked for 15.152500ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 100(5KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/20
                           0MB, paused 1.618ms total 350.577ms
                        I  WaitForGcToComplete blocked for 350.001084ms for cause Background
                        I  WaitForGcToComplete blocked for 14.571583ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 44(2400B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/2
                           00MB, paused 1.389ms total 350.564ms
                        I  WaitForGcToComplete blocked for 350.047333ms for cause Background
                        I  WaitForGcToComplete blocked for 14.522667ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 26(1328B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/2
                           00MB, paused 1.616ms total 335.535ms
                        I  WaitForGcToComplete blocked for 335.795667ms for cause Background
                        I  WaitForGcToComplete blocked for 9.686583ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 6(192B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200
                           MB, paused 1.304ms total 350.064ms
                        I  WaitForGcToComplete blocked for 350.675834ms for cause Background
                        I  WaitForGcToComplete blocked for 9.704416ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 7(464B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191M
                           B/200MB, paused 726us total 362.576ms
                        I  WaitForGcToComplete blocked for 363.036667ms for cause Alloc
                        I  WaitForGcToComplete blocked for 363.268084ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 1.241ms total 360.112ms
                        I  WaitForGcToComplete blocked for 359.032667ms for cause Background
                        I  WaitForGcToComplete blocked for 14.627500ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 8(464B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200
                           MB, paused 744us total 339.958ms
                        I  WaitForGcToComplete blocked for 338.451833ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 743us total 348.802ms
                        I  Alloc sticky concurrent mark sweep GC freed 3(112B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 715us total 11.886ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 6(192B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200
                           MB, paused 755us total 355.978ms
                        I  WaitForGcToComplete blocked for 715.789584ms for cause Background
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB
                           /200MB, paused 1.532ms total 381.857ms
                        I  WaitForGcToComplete blocked for 382.044500ms for cause Alloc
                        I  WaitForGcToComplete blocked for 391.464334ms for cause Alloc
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 1.240ms total 9.625ms
                        I  WaitForGcToComplete blocked for 9.075833ms for cause Background
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB
                           /200MB, paused 1.646ms total 357.263ms
                        I  WaitForGcToComplete blocked for 357.835499ms for cause Alloc
                        I  WaitForGcToComplete blocked for 356.711750ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 1.236ms total 380.687ms
                        I  WaitForGcToComplete blocked for 379.932833ms for cause Background
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB
                           /200MB, paused 765us total 365.231ms
                        I  WaitForGcToComplete blocked for 365.586416ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB
                           , paused 765us total 365.108ms
                        I  WaitForGcToComplete blocked for 739.955750ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 5(128B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paus
                           ed 756us total 365.780ms
                        I  WaitForGcToComplete blocked for 365.185416ms for cause Background
                        I  WaitForGcToComplete blocked for 8.713667ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 4(144B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200
                           MB, paused 1.477ms total 364.418ms
                        I  WaitForGcToComplete blocked for 364.781167ms for cause Alloc
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 1.434ms total 11.496ms
                        I  WaitForGcToComplete blocked for 11.915501ms for cause Background
                        I  WaitForGcToComplete blocked for 12.009ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 1(64B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 756us total 358.665ms
                        I  WaitForGcToComplete blocked for 359.305166ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB
                           , paused 768us total 365.765ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 1(32B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, pause
                           d 1.410ms total 377.932ms
                        I  WaitForGcToComplete blocked for 739.218083ms for cause Background
                        I  WaitForGcToComplete blocked for 9.915750ms for cause Alloc
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 741us total 8.932ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB
                           , paused 1.636ms total 365.446ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            774us total 372.651ms
                        I  Forcing collection of SoftReferences for 36B allocation
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            1.529ms total 377.069ms
                        E  Throwing OutOfMemoryError "Failed to allocate a 36 byte allocation with 19 free bytes"
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 1.963ms total 12.886ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB
                           , paused 1.671ms total 366.654ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            1.856ms total 370.393ms
                        I  Forcing collection of SoftReferences for 28B allocation
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            1.518ms total 375.820ms
                        I  WaitForGcToComplete blocked for 3.001006082s for cause Alloc
                        E  Throwing OutOfMemoryError "Failed to allocate a 28 byte allocation with 19 free bytes" (recursive case)
                        E  "FinalizerDaemon" daemon prio=5 tid=8 Runnable
                        E    | group="system" sCount=0 dsCount=0 obj=0x786bc0e0 self=0xb838e300
                        E    | sysTid=11983 nice=0 cgrp=apps sched=0/0 handle=0xb838e718
                        E    | state=R schedstat=( 0 0 0 ) utm=658 stm=109 core=0 HZ=100
                        E    | stack=0x9dd3c000-0x9dd40000 stackSize=1040KB
                        E    at java.lang.ref.FinalizerReference.add(FinalizerReference.java:54)
                        E    at com.android.internal.os.BinderInternal$GcWatcher.finalize(BinderInternal.java:40)
                        E    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:190)
                        E    at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173)
                        E    at java.lang.Thread.run(Thread.java:818)
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 1.454ms total 14.381ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 4(112B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200
                           MB, paused 1.680ms total 376.196ms
                        I  WaitForGcToComplete blocked for 11.926250ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 2(80B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200M
                           B, paused 791us total 375.003ms
                        I  WaitForGcToComplete blocked for 375.364333ms for cause Background
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 1(32B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB
                           /200MB, paused 1.635ms total 377.509ms
                        I  WaitForGcToComplete blocked for 380.087167ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 4(192B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191M
                           B/200MB, paused 1.281ms total 348.114ms
                        I  WaitForGcToComplete blocked for 346.291417ms for cause Alloc
                        I  WaitForGcToComplete blocked for 7.232001ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB
                           , paused 749us total 347.568ms
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 1.658ms total 11.904ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            1.799ms total 353.925ms
                        I  Forcing collection of SoftReferences for 100B allocation
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            1.345ms total 358.897ms
                        E  Throwing OutOfMemoryError "Failed to allocate a 100 byte allocation with 99 free bytes"
                        I  WaitForGcToComplete blocked for 7.340417ms for cause Alloc
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Background partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/
                           200MB, paused 1.625ms total 358.422ms
                        I  WaitForGcToComplete blocked for 356.807250ms for cause Alloc
                        I  Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB,
                            paused 1.285ms total 9.285ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB
                           , paused 1.456ms total 358.866ms
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            1.299ms total 362.479ms
                        I  Forcing collection of SoftReferences for 130B allocation
                        I  Clamp target GC heap from 207MB to 192MB
                        I  Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 191MB/200MB, paused
                            760us total 375.879ms
                        E  Throwing OutOfMemoryError "Failed to allocate a 130 byte allocation with 67 free bytes" (recursive case)
                        E  "AsyncTask #2" prio=5 tid=17 Runnable
                        E    | group="main" sCount=0 dsCount=0 obj=0x78d4c080 self=0xb849c6d8
                        E    | sysTid=12171 nice=10 cgrp=apps/bg_non_interactive sched=0/0 handle=0xb849ca50
                        E    | state=R schedstat=( 0 0 0 ) utm=9267 stm=2815 core=2 HZ=100
                        E    | stack=0x9b833000-0x9b837000 stackSize=1040KB
                        E    at jcifs.smb.SmbFile.getUncPath0(SmbFile.java:1140)
                        E    at jcifs.smb.SmbFile.<init>(SmbFile.java:617)
                        E    at jcifs.smb.SmbFile.<init>(SmbFile.java:603)
                        E    at jcifs.smb.SmbFile.<init>(SmbFile.java:624)
                        E    at jcifs.smb.SmbFile.doFindFirstNext(SmbFile.java:2018)
                        E    at jcifs.smb.SmbFile.doEnum(SmbFile.java:1745)
                        E    at jcifs.smb.SmbFile.listFiles(SmbFile.java:1722)
                        E    at jcifs.smb.SmbFile.listFiles(SmbFile.java:1655)
                        E    at com.jerrellmardis.amphitheatre.util.VideoUtils.getFilesFromDir(VideoUtils.java:212)
                        E    at com.jerrellmardis.amphitheatre.util.VideoUtils.getFilesFromDir(VideoUtils.java:218)
                        E    at com.jerrellmardis.amphitheatre.util.VideoUtils.getFilesFromDir(VideoUtils.java:218)
                        E    at com.jerrellmardis.amphitheatre.task.GetFilesTask.getFiles(GetFilesTask.java:105)
                        E    at com.jerrellmardis.amphitheatre.task.GetFilesTask.doInBackground(GetFilesTask.java:65)
                        E    at com.jerrellmardis.amphitheatre.task.GetFilesTask.doInBackground(GetFilesTask.java:35)
                        E    at android.os.AsyncTask$2.call(AsyncTask.java:288)
                        E    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                        E    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                        E    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                        E    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                        E    at java.lang.Thread.run(Thread.java:818)
                        I  WaitForGcToComplete blocked for 5.785917ms for cause Alloc
                        I  Alloc partial concurrent mark sweep GC freed 2416362(174MB) AllocSpace objects, 0(0B) LOS objects, 87% free, 1
                           7MB/200MB, paused 721us total 369.963ms
        AndroidRuntime  E  FATAL EXCEPTION: AsyncTask #2
                        E  Process: com.jerrellmardis.amphitheatre, PID: 11965
                        E  java.lang.RuntimeException: An error occured while executing doInBackground()
                        E      at android.os.AsyncTask$3.done(AsyncTask.java:300)
                        E      at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                        E      at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                        E      at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                        E      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                        E      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                        E      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                        E      at java.lang.Thread.run(Thread.java:818)
                        E  Caused by: java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stac
                           k available
   am_on_paused_called  I  [0,com.jerrellmardis.amphitheatre.activity.MainActivity]
               Process  I  Sending signal. PID: 11965 SIG: 9

Screen jumps on maxlines change

I noticed on the verticalgridview, if the posters title has different number of lines on the same row, the screen seems to jump around/recenter on the new height. Is there way to lock it into position for a row so it's not a jittery?

Awesome app by the way!

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.