Are there any major differences or restrictions when using assets or res/raw folders? : <h2>Background</h2>

<p>Some files of the app can only be stored in res/raw or assets folders.</p>

<p>Each of those folders work in a very similar way to the other. res/raw folder allows to access files easier, with all the other benefits of resource files, while assets folder allows to access them no matter the file name and structure (including folders and sub folders).</p>

<p>The main idea of loading files is about the same for both of them. You just have a choice of ease-of-use, depends on your needs.</p>

<h2>The problem</h2>

<p>I remember that a very long time ago, I've found some special behavior of both of those folders:</p>

<ol>
<li><p>Each folder within the assets folder had a max number of files. I think it was about 500, but not sure. I've noticed this behavior a very long time ago, </p></li>
<li><p>Some said that files in the assets folder have a max size for files (example <a href="http://www.programering.com/a/MTM0QzMwATg.html" rel="noreferrer"><strong>here</strong></a>). I never saw such a restriction. Not even on Android 2.3 at the time.</p></li>
<li><p>Some said (example <a href="http://blog.danlew.net/2013/08/20/joda_time_s_memory_issue_in_android/" rel="noreferrer"><strong>here</strong></a>), and it's still believed even today (example <a href="https://github.com/JakeWharton/ThreeTenABP" rel="noreferrer"><strong>here</strong></a>), that if you load a file from res/raw, it could take much more memory than if you took it from assets folder. </p></li>
</ol>

<h2>What I've tried</h2>

<p>For #1, I never had to use more files anyway after the project I worked on, and at the time I worked on it, we simply split the files into more folders.</p>

<p>For #2 , as I wrote, I never noticed it anyway. I used much larger files sizes.</p>

<p>For #3, I tried to make a sample project that compares the memory usage between the 2 methods. I didn't notice any difference (memory usage or time to load) between the 2 methods. Especially not a major one. Sadly I have only one device (Nexus 5x), and it has quite a new Android version (8.1). It might be that starting from specific Android version there is no difference between the 2 methods. Another reason for this is that it's harder to measure memory usage on Java, because of the GC, and I've already noticed that on Android 8.x, memory works a bit differently than before (written about it <a href="https://stackoverflow.com/q/48091403/878126"><strong>here</strong></a>).</p>

<p>I tried to read about the differences and restrictions of the above, but all I've found are very old articles, so I think things might have changed ever since.</p>

<h2>The questions</h2>

<p>Actually it's just one question, but I'd like to split it in case the answer is complex:</p>

<ol>
<li><p>Are there any major or unique limitations or differences between using res/raw and assets folders?</p></li>
<li><p>Does reading a file from the assets folder (by creating an input stream from it) really take less memory than using the res/raw? So much that even one of the most appreciated developers (<a href="https://github.com/JakeWharton/ThreeTenABP" rel="noreferrer"><strong>here</strong></a>) decides to choose it, even nowadays? </p></li>
<li><p>Have the above restrictions existed up to specific Android versions, and then they became identical in terms of no restrictions whatsoever (except of course files naming for res/raw, but that's just how it works) ? </p></li>
<li><p>If so, from which Android version do they work about the same?</p></li>
</ol>
