Як я магу зрабіць некаторыя ачысткі прама перад Android дадатак будзе кінуць паліць?

Ці ёсць нейкі мэтад OnTerminate (), дзе я магу зрабіць некаторыя ачысткі (я хачу, каб ачысціць некаторыя SharedPreferences), калі мой Android дадатак завяршае?

У мяне ёсць дзейнасць, якая трымае слізгальнае сярэдняе некалькіх нумароў, якія я захоўваю ў SharedPreference. Я хачу, каб гэта сярэдняе значэнне да апошняга ў той час як прыкладанне працуе (карыстальнік можа перамяшчацца паміж рознымі відамі дзейнасці), таму я не магу ачысціць яго ад OnDestroy() для гэтай канкрэтнай дзейнасці. Мне трэба, каб быць у стане ачысціць яго пасля таго, як прыкладанне збіраецца кінуць паліць.

Як я магу гэта зрабіць?

3
Улічваючы, што няма ніякай гарантыі, што вы атрымаеце якую-небудзь падзею, акрамя OnPause() , перш чым прыкладанне закрыта .. робіць андроіда падтрымка Runtime.addShutdownHook і гэта працуе, як вы хочаце чакаць?
дададзена аўтар Voo, крыніца
Вы хочаце, каб ваш слізгальнае сярэдняе, каб не было ясна, пакуль па крайняй меры адна актыўнасць жывая? Калі вы націснеце на кнопку дадому, калі сярэдні быць ачышчаны адразу ці толькі тады, калі аперацыйная сістэма, нарэшце, забівае сваю дзейнасць? Калі карыстальнік проста паўторна пачынае свой асноўны від дзейнасці вы можаце ачысціць свае перавагі тады? Калі вы хочаце толькі гэтыя сярэднія да апошняга ў той час як ваша прыкладанне працуе, вы думалі пра службу замест гэтага?
дададзена аўтар Alex, крыніца

3 адказы

Я не спрабаваў, але вось што я хацеў бы зрабіць:

  • Як Алекс згадвалася ў каментары да першапачатковага пытанні, выкарыстоўвайце Сэрвіс , каб падзяліць прыкладання ў маштабах дзяржавы паміж Дзейнасць .
  • Пры перамяшчэнні паміж Спорт , прывязку да паслугі ад "новай" дзейнасці, і адвязаць ад «старога» адзін. Праверце гэта , каб зразумець, як каардынаваць дзейнасць.
  • Калі вы будзеце прытрымлівацца гэтым чынам, вы можаце быць упэўнены, што па крайняй меры адзін актыўнасць заўсёды звязана з кодам <> Сэрвіс таго часу, пакуль ваша прыкладанне працуе; і што ўсе віды дзейнасці, якія не з'яўляюцца незвязанымі, калі праграма больш не працуе - у які момант вашага сэрвісу OnDestroy() называецца. Гэта дзе вы выконваеце вашу ачыстку.
2
дададзена

Так што АНДРОІД на самай справе не мае паняцця прыкладання быўшы «скончана». Unfortunently няма нічога сінонімам «OnTerminate ()». Ёсць некаторыя крытэрыі, па якіх вы можаце вырашыць, калі, каб ачысціць слізгальнае сярэдняе?

0
дададзена
Я думаю, калі дадатак ідзе на галоўным экране я магу лічыць яго «спыненыя», хоць ёсць крайнія выпадкі, якія могуць злічыць гэта несапраўднае, я гатовы зрабіць выключэнне ...
дададзена аўтар Sheehan Alam, крыніца
На самой справе там існуе элемент OnTerminate метад android.app.Application клас .. аднак гэта бескарысна ў гэтым выпадку, так як гэта не толькі называецца ў эмулируемой асяроддзі працэсу і ніколі на фактычным прылады.
дададзена аўтар curioustechizen, крыніца

Use SharedPreference.Editor to remove the preferences, and commit. Here's a link for you: http://developer.android.com/reference/android/content/SharedPreferences.Editor.html

0
дададзена
Я ведаю, як выдаліць перавагу, мне проста трэба высветліць, калі, каб выдаліць яго.
дададзена аўтар Sheehan Alam, крыніца
Гэта не зусім тое, што ён просіць аб.
дададзена аўтар Kurtis Nusbaum, крыніца