• 0 Posts
  • 408 Comments
Joined 1 year ago
cake
Cake day: June 13th, 2023

help-circle















  • And yet, I’ve never run into RAM problems on iPhones, both as a user and as a developer. On iOS an app can use almost all the RAM if needed, as long as your app is running in the foreground. Android by contrast is much stingier with RAM, especially with Java/Kotlin apps. There are some hard limits on how much RAM you can actually use and it’s a small fractIon of the total amount. The actual limit is set by the manufacturer and differs per device, Android itself only guarantees a minimum of 16MB per app.

    The reason is probably because Android is much more lenient with letting stuff run in the background so it needs to limit the per-app memory usage.

    Those apps also use more RAM than an equivalent iOS app, simply because they run on a garbage-collected runtime. With a GC there is a trade-off between performance and memory usage. A GC always wastes memory, as memory isn’t freed immediately once no longer in use. It’s only freed when the GC runs. If you run it very often you waste little RAM at the cost of performance (all the CPU cycles used by the GC) if you run it at large intervals you waste a lot of RAM (because you let a lot of ‘garbage’ accumulate before cleaning it up). In general, to achieve similar performance to non-GC’d code you need to tune it so it uses about 4 times as much RAM. The actual overhead depends on how Google tuned the GC in ART combined with the behavior of specific apps.

    Note that this only applies to apps running in ART, many system components like the web browser are written in C++ and don’t suffer from this inefficiency. But it does mean Android both uses more RAM than iOS while at the same time giving apps less RAM to actually use.

    It basically comes down to different architectural choices made by Google and Apple.




  • Several things that made the SD card annoying to developers.

    First: you could not install an APK on the SD card (probably due to DRM reasons). So if you had a larger app and you wanted users to be able to take advantage of the additional storage offered by the SD card you could not do this simply by having a large APK. (Note that this also was true for phones that had no removable SD card but had internal memory that presented itself as ‘external storage’).

    On some phones the normal storage was so small that any larger app had to leverage the external storage to be able to even fit (we’re talking 10+ years ago). The way to do this was using so-called ‘expansion files’. These were additional data files, up to 2GB a piece, that could be installed on the external storage. These came with some additional difficulties.

    • They were pure data files, so they could not contain any executable code. They were just big binary blobs, so none of the Android built-in mechanisms for loading assets depending on screen density, screen size and all that stuff worked. You had to do it all by hand.
    • Since they were just binary blobs, you had to do any organization inside the files yourself. For example, they could be large ZIP files but you had to do all the ZIP handling yourself. Compared to normal APKs that are also ZIP files but where you can just load stuff from the APK archive and it’s all handled by the framework.
    • The expansion files were separate from the APK. The Play Store did try to automatically download them if your app had expansion files, but this was not guaranteed. Furthermore, because they live on an SD card they could disappear at any moment. Your app needed additional logic to deal with this, code to re-download the files if they were missing, code to handle errors during the download, UI to show the download progress, etc.

    Another problem with SD cards was the huge variety in quality of SD cards. Phones internal storage is reasonably fast, but you never know what kind of cheap-ass yanky SD card the users installed in their phone. This caused all kinds of performance problems in more demanding apps and as a developer you had to deal with the fall-out (bad reviews, support requests, etc.)


  • BorgDrone@lemmy.onetoMemes@lemmy.ml*Permanently Deleted*
    link
    fedilink
    arrow-up
    2
    arrow-down
    7
    ·
    2 months ago
    • Losing SD Expansion sucks; they should bring this back. Only reason they stopped this is greed.

    Fuck that noise. SD expansion was a terrible idea and I’m glad it’s gone. There are so many problems introduced by removable storage, it was a terrible PITA to deal with as a developer. One of Google’s dumbest ideas in early Android. Good. Fucking. Riddance.