Android қолданбасы шықпастан бұрын кейбір тазартуды қалай жасауға болады?

Android қолданбасы аяқталғанда кейбір тазалауды (Кейбір SharedPreferences параметрлерін тазартқым келеді) орындауға болатын МенТерминат() әдісінің қандай да бір түрі бар ма?

Менде SharedPreference ішінде сақтайтын бірнеше санның орташаланған орташа мәнін сақтайтын қызметім бар. Бағдарлама жұмыс істеп тұрған кезде бұл орташа көрсеткіштің аяқталуын қалаймын (пайдаланушы әртүрлі әрекеттер арасында жылжи алады), сондықтан оны нақты жұмыс үшін Destroy() ішінде тазалауға болмайды. Қолданба шыққалы жатқаннан кейін оны тазалауға болады.

Мұны қалай жасауға болады?

3
Қолданба жабылмас бұрын onPause() -тен басқа қандай да бір оқиғаның болмауын қамтамасыз ете алмайтынын ескере отырып, android қолдау Runtime.addShutdownHook және ол сіз қалай жұмыс істейді күту керек пе?
қосылды автор Voo, көзі
Кем дегенде бір қызмет тірі болғандықтан, орташа жұмыс істейтін орташа деңгейіңіз анық болмауы керек пе? Егер сіз үй кнопкасын бассаңыз, онда орта есеппен дереу тазаланады немесе тек қана сіздің қызметіңізді өлтіргенде ғана керек пе? Егер пайдаланушы тек сіздің негізгі қызметіңізді қайтадан бастаса, онда сіз артықшылықтарды тазалай аласыз ба? Егер сіз бұл бағдарлама жұмыс істеп тұрған кезде ғана бұл орташа мәндердің болуын қаласаңыз, орнына қызмет туралы ойлайсыз ба?
қосылды автор Alex, көзі

3 жауаптар

Мен бұны көрмедім, бірақ мен не істейтінімді:

  • Алекс өзінің түпнұсқа сұрағына жауап ретінде Activities арасындағы бағдарлама жағдайын ортақ пайдалану үшін Service пайдаланыңыз.
  • Activities арасына жылжытқанда, «жаңа» әрекеттен қызметке қосылып, «ескі» біреуден байланыстырыңыз.
  • Бұл әрекеттерді үйлестіруді түсіну .
  • Егер сіз бұны дұрыс орындасаңыз, бағдарламаңыз жұмыс істеп тұрған кезде, кем дегенде бір Activity әрқашан Қызмет -мен байланысқанына сенімді бола аласыз; және барлық іс-әрекеттер бағдарлама жұмыс істемей қалған кезде шектелмейді - онда сіздің сервисің onDestroy() деп аталады. Мұнда сіз тазалауды орындайсыз.
2
қосылды

Сондықтан Android бағдарламасында «аяқталды» деген бағдарламаның тұжырымдамасы жоқ. Өкінішке орай, «onTerminate ()» синонимінің ешбірі жоқ. Орындалып тұрған ортаңызды тазалау уақытын анықтауға болатын кейбір критерийлер бар ма?

0
қосылды
Қолданбаның басты экранға өтіп жатқанын білемін, егер бұл жарамсыз деп есептейтін жағдайлар бар болса да, мен ерекше жағдайларды жасауға дайынмын ...
қосылды автор Sheehan Alam, көзі
android.app.Application сыныпта onDerminate әдісі бар, бірақ бұл сценарийде пайдасыз, себебі ол тек эмуляцияланған процесс орталарында шақырылады және ешқашан нақты емес құрылғылар.
қосылды автор 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
қосылды
Мен артықшылықты қалай жою керектігін білемін, оны жою үшін WHEN қажет екенін түсінуім керек.
қосылды автор Sheehan Alam, көзі
Бұл ол туралы сұрайтын нәрсе емес.
қосылды автор Kurtis Nusbaum, көзі