Hibernate FAQ

Hibernate's FAQ

Q. The app uses up to 40MB RAM. For such a small app, that is still a lot of RAM. Why?

A. The app is very simple, so the RAM is used by the lists of hibernated and installed apps - if they are large, you see memory consumption - nothing fancy - and it's hardly possible to minimize. For example, on my devices it's about 7Mb.

Q. In the settings menu, the last option is 'Re-hibernate after timeout'. I couldn't understand what this option means.

A. The timeout is introduced for automatic re-hibernation of formerly activated apps (from hibernation list), which is no longer in foreground. For example, if you hibernate an app A, and switch to it at some moment, it becomes interactive app and is not hibernated anymore. Then, if you switch to other apps or lock your device, and the app A remains in background for 1 minute, Hibernate will resume hibernation of the app.

Q. What is the use of the attempts count in the Settings?

A. The app's service checks all running apps against the hibernation list periodically (you set the period in the settings) until you stop the service or kill Hibernate itself. Attempt count is for those apps which do not agree to get hibernated from the 1-st attempt. Some apps restart themselves after 1-st, or 2-nd, or 3-d hibernation, but may calm down after that. Normally, if all apps would respect their hibernation instantly, this would not be required, and the first attempt would suffice.

Q. Can we hibernate google apps (such as Drive, Search, Play store) and google services?

A. You can try to hibernate all apps available for hibernation in the Hibernate UI (they are all except for those of foreground and important priority), BUT I think many google apps and services will insist on running constantly, so you'll get them listed in the insistent list and they will not be hibernated actually.

Q. Why the app does not provide a widget?

A. By design, Hibernate provides a service, which automatically and infinitely hibernate background apps you specified, so there is no need for a widget. When you open an app from your list, it's temporary excluded from hibernation until the app again goes to background. Then its hibernation resumes automatically.

Q. Hibernated apps seems running. Why?

A. There can be several reasons for this. Let me explain a bit. The Hibernate works in the following way. Once you choose apps for hibernation list, Hibernate periodically tries to freeze them using the only Android API function available for such cases in non-rooted devices. Some apps are frozen successfully. Some other restart themselves, and Hibernate try to freeze them again up to a predefined number of times (in the settings). If the number of trials is exceeded, corresponding app is marked as "insistent" - it can not be frozen. It is designed is such a way, that it's always running, and Hibernate can do nothing with that. All such apps are listed as insistent processes. If you don't see an app in the insistent list, then it is most likely hibernated successfully, and it's my turn to ask you - how do you know that the app is still running? Hibernation does not remove an app from the system list of running apps or the list of recent apps! Hibernation is not the same as pressing "Force stop" button in the app system properties. Hibernation pauses an app, flashes its current state to the local disk, and remove the app from memory (it does not consume neither memory nor CPU anymore). But the app is ready to be awakened as soon as you switch to it. In some rare cases, the frequency of attempts to hibernate an app is the same as the frequency at which this app re-creates itself. In this case the app will never be hibernated and never will be marked as insistent. In such situation you should either check system logs (using aLogCat app with the "HIB" key as a filter) and then remove incompatible apps from hibernation list, or change Hibernate settings appropriately (for example, enlarge hibernation period and lower number of attempts).

Q. It's too bad the app needs the battery power to keep running, otherwise it can't auto hibernate other apps.

A. Probably you should address your critics to Google, which does not provide any means to build a startup manager for Android (for non-rooted devices). As for Hibernate - try to change your settings, for example, set period to the maximum 10, and lower attempts count to 3. This will minimize CPU usage by Hibernate.

Q. Can this app let hibernated processes to be woken up by its push services?

A. If you mean Google Cloud Messaging then yes, notifications should awake frozen apps - this is done by the system itself. But you may not hibernate Google Play services which processes incoming messages.

Q. I want to translate the app to other language. What can I do?

A. Please, contact me via e-mail. If you are willing to translate the app to any of currently unsupported languages, I'm ready to co-operate. Please, note that I mean human/professional translation, not an automatic translation. Translation should cover not only the app itself, but the site and Google Play page as well.

Q. Is there something wrong with Hibernate on Android 5 and up?

A. Starting from version 5 Android does not provide reliable information about running tasks. Here is what the official documentation says about getRunningTasks method of ActivityManager which was used in Hibernate to prevent interactive apps from hibernation and to resume hibernation of an app by timeout when it is left unused in background:

This method is no longer available to third party applications: the introduction of document-centric recents means it can leak person information to the caller. For backwards compatibility, it will still return a small subset of its data: at least the caller's own tasks, and possibly some other tasks such as home that are known to not be sensitive.

I don't think the way how Google "protects" user's private documents is a proper way, because they restricted not only the access to user content but to general purpose information such as package names as well. It looks like breaking a butterfly on the wheel.

But never mind. Just update Hibernate to version 1.22 (or higher). It implements a special helper accessibility service which monitors in real time as one applications become foreground while the others return to background. No other information is collected by Hibernate.

The only drawback of the service is that you need to enable it manually. When Hibernate is starting under Android 5, and the service is not enabled, the app shows a notification allowing you to quickly open Accessibility settings. The app's settings window does also contain a special line to open the same system dialog.

Please find more details about new restrictions in public APIs made by Google in Android 5.1.1 on the dedicated page.

Q. Can I open system "app info" dialog (with "Force stop" and other useful buttons) just from Hibernate?

Yes, you can. To open "app info" dialog tap an icon of selected app in any list. In the Status window you can also perform a long press on any item, and this will also bring the "app info" dialog.

Q. What is the new experimental option "Force stop" automation?

Please find details on the dedicated pages - Hard-killing background processes on Android without root and Force stop (or kill) a process on Android without root: part 2.

2 comments:

  1. How is the hibernate list made and what do the various colors mean?

    ReplyDelete
    Replies
    1. The colors are described on the main product page main product page. Here is the quote from there:

      "System processes (the ones installed with the system) are shown in yellow in the main window. Insistent processes are shown in orange. If an app from the hibernation list was activated by user, it's highlighted as green."

      As for the list, you may read some techincal details on StackOverflow.

      Delete