Your activity will start again in two ways
Configuration changes like screen rotation.
You start application freshly.
For the first case you can put your array in the bundle by overriding onSaveInstanceState(Bundle)
by calling putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)
in this case you have to implement Parcelable interface on your object or implement Serializable on your object and call putSerializable("key",object);
for each item in list.
For second case you can use Preferences / files / sqlite database to save your data.
You sue sqlite if your data is relational use preferences otherwise , using files is fast but less flexible and doens't provide lots of feature as a database, you should use files to store Media , with the help of a file provider.
Note : In very rare cases when OS needs to kill your app to free up resources the ostop() might not be called use onPause() to be sure you also handle that case, although it is very rare.