Whats the main advantage and disadvantage of “do not keep activities” in android

萝らか妹 提交于 2019-11-30 01:47:06
Adam Radomski

How much this option will affect mobile applications?

If they are well writen this option will not affect them.

What exactly does this do?

If you have this option turned on only variables kept in activity with method onSaveInstanceState will be saved when you go to another activity or app goes in background. All other variables will be removed immediately. When this option is off there is possibility that these variable will be kept

Does that mean if I open an app and as soon as I leave it, it actually closes that app and I wouldn't see it in the task manager to manually kill it?

No it means that all not kept variables will be removed. When you in example press home button.

Does this create any positive and or negative functionality on my apps?

No it only helps to develop application properly. It helps to predict unexpected situations.

Do not Keep Activities is purely a developer option that will help you to check if

  1. You have Saved the state of the activity, before it goes background.

2̶.̶ ̶H̶a̶n̶d̶l̶e̶d̶ ̶L̶o̶w̶ ̶M̶e̶m̶o̶r̶y̶ ̶S̶i̶t̶u̶a̶t̶i̶o̶n̶s̶ ̶p̶r̶o̶p̶e̶r̶l̶y̶(̶i̶n̶ ̶w̶h̶i̶c̶h̶ ̶c̶a̶s̶e̶ ̶t̶h̶e̶ ̶a̶c̶t̶i̶v̶i̶t̶y̶ ̶w̶i̶l̶l̶ ̶b̶e̶ ̶d̶e̶s̶t̶r̶o̶y̶e̶d̶)̶.̶ ̶

Edit : This option does not emulate Low memory Situations. When the device experiences low memory, the system might ask the activity to Drop by calling Finish() or it may go ahead and kill the process completely, as the comment says.

It is still good to develop with this option enabled. You will have to properly code the onSaveInstanceState() and onRestoreInstanceState() methods. By doing this, even if the process gets killed, when the user navigates back to this activity, onCreate() will be called with the savedInstanceState that was saved in the onSaveInstanceState(Bundle) method.

ADVANTAGE :

Developer can check the abnormal behaviour of their application and fix the cases of low memory - framework kills the application

DISADVANTAGE :

If user has unknowingly enabled this option, then the device will work slow and every activities will be re-created across user navigation on his device. This will hinder user work

Very good answer is given in xda developer forum about usage of this option

As an addition to answers above is another, not visible from the first look disadvantage that you can test only activity destroying/recreation issues with this option, but not the whole process of application recreation due to memory lack or other system conditions, because all independent from activity memory stays.

Imagine that you have some singleton on which your classes are dependent. After system have killed app your singletons will be also cleared and restored with beginning state in case you haven't implemented its restoring by yourself. So, despite of your activity view state & fields would be restored in case onSaveInstanceState & onRestoreInstanceState was implemented correctly, that's not guarantee a correct app behavior after restoring, even on the particular screen. That should be considered

So to test such fully case you should stop application manually, but don't drop it from task manager. Easiest way - with stop red square button in android studio. And open app again.

See more

"Do not keep activities" advantage is that it emulate system low memory situation when it start killing different parts of the app. Your app must maintain this situation. Disadvantage is that this option is kind of stricted and kill only activities when there is no way emulate this for services

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!