අයදුම්පතක් ඉල්ලා අස්වීම ප්‍රතික්ෂේප කළ හැකිද?


1161

ඇන්ඩ්‍රොයිඩ් ඉගෙනීමේ මගේ උත්සාහය ඉදිරියට ගෙන යමින්, මම පහත සඳහන් දේ කියවා ඇත්තෙමි .

ප්‍රශ්නය: යෙදුම මරා දැමීමට මෙනු විකල්පයක් තැබුවේ නැත්නම් පරිශීලකයා kill ාතනය කිරීමට තේරීමක් තිබේද? එවැනි විකල්පයක් නොමැති නම්, පරිශීලකයා යෙදුම අවසන් කරන්නේ කෙසේද?

පිළිතුර: (රොමේන් ගයි): පරිශීලකයා එසේ නොකරයි, පද්ධතිය මෙය ස්වයංක්‍රීයව හසුරුවයි. ක්‍රියාකාරකම් ජීවන චක්‍රය (විශේෂයෙන් onPause / onStop / onDestroy) සඳහා වන්නේ එයයි. ඔබ කුමක් කළත්, "ඉවත්වීම" හෝ "පිටවීම" යෙදුම් බොත්තමක් නොතබන්න. ඇන්ඩ්‍රොයිඩ් යෙදුම් ආකෘතිය සමඟ එය නිෂ් less ල ය. මූලික යෙදුම් ක්‍රියාත්මක වන ආකාරය සඳහා ද මෙය පටහැනිය.

හෙහෙ, ඇන්ඩ්‍රොයිඩ් ලෝකයේ මා ගන්නා සෑම පියවරක් සඳහාම මම යම් ආකාරයක ගැටලුවකට මුහුණ දෙමි = (

පෙනෙන විදිහට, ඔබට ඇන්ඩ්‍රොයිඩ් හි යෙදුමකින් ඉවත් විය නොහැක (නමුත් ඇන්ඩ්‍රොයිඩ් පද්ධතියට ඔබේ යෙදුම දැනෙන සෑම විටම එය සම්පූර්ණයෙන්ම විනාශ කළ හැකිය). මොකද වෙන්නේ? "සාමාන්‍ය යෙදුමක්" ලෙස ක්‍රියා කරන යෙදුමක් ලිවිය නොහැකි යැයි මම සිතීමට පටන් ගනිමි - පරිශීලකයාට ඔහු / ඇය එසේ කිරීමට තීරණය කළ විට යෙදුමෙන් ඉවත් විය හැකිය. එය මෙහෙයුම් පද්ධතිය මත විශ්වාසය තැබිය යුතු දෙයක් නොවේ.

මම නිර්මාණය කිරීමට උත්සාහ කරන යෙදුම ඇන්ඩ්‍රොයිඩ් වෙළඳපොළ සඳහා යෙදුමක් නොවේ. එය සාමාන්‍ය ජනතාව විසින් “පුළුල් භාවිතය” සඳහා වන යෙදුමක් නොවේ, එය ඉතා පටු ව්‍යාපාරික ක්ෂේත්‍රයක භාවිතා කිරීමට යන ව්‍යාපාරික යෙදුමකි.

වින්ඩෝස් මොබයිල් සහ .නෙට් හි පවතින ගැටලු රාශියකට එය විසඳුම් ලබා දෙන බැවින් මම ඇත්ත වශයෙන්ම ඇන්ඩ්‍රොයිඩ් වේදිකාව සඳහා සංවර්ධනය කිරීමට බලාපොරොත්තු වෙමි. කෙසේ වෙතත්, පසුගිය සතිය මට යම් තරමක හැරීමක් විය ... මම හිතන්නේ මට ඇන්ඩ්‍රොයිඩ් අතහැර දැමිය යුතු නැත, නමුත් එය දැන් එතරම් හොඳ පෙනුමක් නැත = (

මට එහි ක්රමයක් ඇත්තටම ඉල්ලුම් ඉවත්?

Answers:


1290

මෙය අවසානයේදී ඔබේ ප්‍රශ්නයට යොමු වනු ඇත, නමුත් මෙම ලිවීමේ අවස්ථාවේදී දැනටමත් ලබා දී ඇති විවිධ පිළිතුරු සඳහා ඔබේ විවිධ අදහස් දැක්වීමේදී ඔබ මතු කරන ගැටළු ගණනාවක් විසඳීමට මට අවශ්‍යය. ඔබේ අදහස වෙනස් කිරීමට මට කිසිදු අදහසක් නැත - ඒ වෙනුවට, අනාගතයේදී මෙම ලිපිය කියවීමට පැමිණෙන අනෙක් අය සඳහා මේවා මෙහි ඇත.

කාරණය වන්නේ මගේ යෙදුම අවසන් වන්නේ කවදාද යන්න තීරණය කිරීමට ඇන්ඩ්‍රොයිඩ් සඳහා මට ඉඩ දිය නොහැකි වීමයි. එය පරිශීලකයාගේ තේරීම විය යුතුය.

පරිසරය විසින් අවශ්‍ය පරිදි යෙදුම වසා දැමූ ආකෘතිය ගැන මිලියන සංඛ්‍යාත ජනතාවක් පරිපූර්ණ ලෙස සතුටු වෙති. එම පරිශීලකයින් වෙබ් පිටුවක් "අවසන් කිරීම" හෝ තාප ස්ථායයක් "අවසන් කිරීම" ගැන සිතනවාට වඩා ඇන්ඩ්‍රොයිඩ් යෙදුම "අවසන් කිරීම" ගැන සිතන්නේ නැත.

අයිෆෝන් භාවිතා කරන්නන් බොහෝ දුරට එක හා සමානයි, ඒ තුළ අයිෆෝන් බොත්තම එබීමෙන් යෙදුම අවසන් වූ බවක් දැනෙන්නේ නැත, මන්ද බොහෝ අයිෆෝන් යෙදුම් පරිශීලකයා නතර කළ තැනට පැමිණේ, යෙදුම සැබවින්ම වසා දමා තිබුණද (අයිෆෝන් පමණක් බැවින්) දැනට එක් තෙවන පාර්ශවීය යෙදුමකට ඉඩ දෙයි).

මා ඉහත කී පරිදි, මගේ යෙදුමේ බොහෝ දේ සිදුවෙමින් පවතී (දත්ත උපාංගයට තල්ලු කිරීම, සැමවිටම තිබිය යුතු කාර්යයන් සහිත ලැයිස්තු ආදිය).

"සෑම විටම තිබිය යුතු කාර්යයන් සහිත ලැයිස්තු" යන්නෙන් අදහස් කරන්නේ කුමක්දැයි මම නොදනිමි, නමුත් "උපාංගයට තල්ලු කරන ලද දත්ත" ප්‍රසන්න ප්‍රබන්ධයක් වන අතර එය කිසිසේත් ක්‍රියාකාරකමක් මගින් නොකළ යුතුය. AlarmManagerඋපරිම විශ්වසනීයත්වය සඳහා ඔබේ දත්ත යාවත්කාලීන කිරීමට නියමිත කාර්යයක් (හරහා ) භාවිතා කරන්න .

අපගේ පරිශීලකයින් ලොග් වී ඇති අතර ඔවුන්ට දුරකථන ඇමතුමක් ලැබෙන සෑම අවස්ථාවකම එය කළ නොහැක සහ ඇන්ඩ්‍රොයිඩ් යෙදුම විනාශ කිරීමට තීරණය කරයි.

මේ සම්බන්ධයෙන් කටයුතු කරන බොහෝ iPhone සහ Android යෙදුම් තිබේ. සාමාන්‍යයෙන්, ඔවුන් සෑම විටම අතින් පිවිසීමට බල කරනවාට වඩා, ඔවුන් ලොගොන් අක්තපත්‍ර රඳවාගෙන සිටින නිසාය.

උදාහරණයක් ලෙස, යෙදුමෙන් පිටවන විට යාවත්කාලීන කිරීම් පරීක්ෂා කිරීමට අපට අවශ්‍යය

එය ඕනෑම මෙහෙයුම් පද්ධතියක වැරැද්දකි. ඔබ දන්නා සියල්ලටම, ඔබගේ යෙදුම "පිටවීමට" හේතුව මෙහෙයුම් පද්ධතිය වසා දැමීමයි, එවිට ඔබගේ යාවත්කාලීන ක්‍රියාවලිය මැද ධාරාව අසාර්ථක වනු ඇත. සාමාන්යයෙන්, එය හොඳ දෙයක් නොවේ. එක්කෝ ආරම්භයේ යාවත්කාලීනයන් පරීක්ෂා කරන්න හෝ යාවත්කාලීනයන් මුළුමනින්ම අසමමුහුර්තව පරීක්ෂා කරන්න (උදා: නියමිත කාර්යයක් හරහා), කිසි විටෙකත් පිටවීමකින් තොරව.

සමහර අදහස් දැක්වෙන්නේ පසුපස බොත්තම එබීමෙන් යෙදුම කිසිසේත් විනාශ නොවන බවයි (ඉහත මගේ ප්‍රශ්නයේ සබැඳිය බලන්න).

BACK බොත්තම එබීමෙන් "යෙදුම විනාශ නොවේ". පරිශීලකයා BACK බොත්තම එබූ විට තිරයේ තිබූ ක්‍රියාකාරකම් එය අවසන් කරයි.

එය අවසන් කළ යුත්තේ පරිශීලකයන්ට එය අවසන් කිරීමට අවශ්‍ය වූ විට පමණි - කිසි විටෙකත් වෙනත් ආකාරයකින්. ඔබට ඇන්ඩ්‍රොයිඩ් වල හැසිරෙන යෙදුම් ලිවිය නොහැකි නම්, සැබෑ යෙදුම් ලිවීම සඳහා ඇන්ඩ්‍රොයිඩ් භාවිතා කළ නොහැකි යැයි මම සිතමි = (

එවිට වෙබ් යෙදුම් ද කළ නොහැක. හෝ WebOS , මම ඔවුන්ගේ ආකෘතිය නිවැරදිව තේරුම් ගන්නේ නම් (තවම එකක් සමඟ සෙල්ලම් කිරීමට අවස්ථාවක් ලැබී නැත). මේ සියල්ලෙහිම, පරිශීලකයින් කිසිවක් "අවසන්" නොකරයි - ඔවුන් ඉවත්ව යයි. අයිෆෝන් ටිකක් වෙනස් ය, එය දැනට එක් දෙයකට වරකට ධාවනය කිරීමට ඉඩ දී ඇත (ව්‍යතිරේක කිහිපයක් සමඟ), එබැවින් ඉවත්ව යාමේ ක්‍රියාවෙන් ඇඟවෙන්නේ යෙදුම තරමක් ඉක්මණින් අවසන් වන බවයි.

යෙදුමෙන් ඉවත් වීමට මට ක්‍රමයක් තිබේද?

අනෙක් සියල්ලන්ම ඔබට පැවසූ පරිදි, පරිශීලකයින්ට (පසුපසට) හෝ ඔබේ කේතය (හරහා finish()) ඔබගේ දැනට ක්‍රියාත්මක වන ක්‍රියාකාරකම් වසා දැමිය හැකිය. වෙබ් යෙදුම් භාවිතා කිරීම සඳහා "ඉවත්වීම" විකල්පයක් අවශ්‍ය වනවාට වඩා, පරිශීලකයින්ට සාමාන්‍යයෙන් වෙනත් කිසිවක් අවශ්‍ය නොවේ.


නිර්වචනය අනුව යෙදුම් පරිසර දෙකක් සමාන නොවේ. මෙයින් අදහස් කරන්නේ නව ඒවා පැනනගින විට සහ අනෙක් ඒවා වළලනු ලබන විට පරිසරයේ ප්‍රවණතා ඔබට දැකගත හැකි බවයි.

උදාහරණයක් ලෙස, "ගොනුව" යන සංකල්පය තුරන් කිරීමට උත්සාහ කිරීම සඳහා වැඩෙන ව්‍යාපාරයක් පවතී. බොහෝ වෙබ් යෙදුම් පරිශීලකයින්ට ලිපිගොනු ගැන සිතීමට බල නොකරයි. අයිෆෝන් යෙදුම් සාමාන්‍යයෙන් පරිශීලකයින්ට ලිපිගොනු ගැන සිතීමට බල නොකරයි. ඇන්ඩ්‍රොයිඩ් යෙදුම් සාමාන්‍යයෙන් පරිශීලකයින්ට ලිපිගොනු ගැන සිතීමට බල නොකරයි. සහ යනාදි.

ඒ හා සමානව, යෙදුමක් "අවසන් කිරීම" යන සංකල්පය තුරන් කිරීමට උත්සාහ කිරීම සඳහා වැඩෙන ව්‍යාපාරයක් තිබේ. බොහෝ වෙබ් යෙදුම් පරිශීලකයාට වරනය වීමට බල නොකරයි, නමුත් අක්‍රිය කාලයකට පසුව පරිශීලකයා ව්‍යංගයෙන් ඉවත් කරයි. ඇන්ඩ්‍රොයිඩ් සමඟ එකම දේ, සහ තරමක් දුරට, අයිෆෝන් (සහ සමහර විට වෙබ්ඕඑස්).

මේ සඳහා යෙදුම් සැලසුම කෙරෙහි වැඩි අවධානයක් යොමු කිරීම, ව්‍යාපාර අරමුණු කෙරෙහි අවධානය යොමු කිරීම සහ පෙර යෙදුම් පරිසරයකට බැඳී ඇති ක්‍රියාත්මක කිරීමේ ආකෘතියක් සමඟ බැඳී නොසිටීම අවශ්‍ය වේ. මෙය කිරීමට කාලය හෝ නැඹුරුවක් නොමැති සංවර්ධකයින් ඔවුන්ගේ පවත්නා මානසික ආකෘතිය බිඳ දැමූ නව පරිසරයන් ගැන කලකිරීමට පත් වනු ඇත. මෙය එක් පරිසරයකම වරදක් නොවේ, එය කන්දක් හරහා ගලා බසින කුණාටුවකට වඩා එය වටා ගලා බසින වරදකි.

නිදසුනක් ලෙස, හයිපර්කාඩ් සහ ස්මාල්ටෝක් වැනි සමහර සංවර්ධන පරිසරයන්හි යෙදුම සහ සංවර්ධන මෙවලම් එක් සැකසුමක දී එකට බැඳී ඇත. මෙම සංකල්පය යෙදුම් සඳහා භාෂා දිගුවන් බොහෝ, පිටත අල්ලා නැත (උදා: VBA දී එක්සෙල් , ළිස්ප් AUTOCAD පිළිබද ). යෙදුම තුළම සංවර්ධන මෙවලම් පවතින බව අනුමාන කරන මානසික ආකෘති ඉදිරිපත් කළ සංවර්ධකයින්ට, එබැවින්, ඔවුන්ගේ ආකෘතිය වෙනස් කිරීමට හෝ ඔවුන්ගේ ආකෘතිය සැබෑවක් වන පරිසරයන්ට සීමා වීමට සිදු විය.

එබැවින්, ඔබ ලියන විට:

මම සොයාගත් වෙනත් අවුල් සහගත දේවල් සමඟ, ඇන්ඩ්‍රොයිඩ් සඳහා අපගේ යෙදුම සංවර්ධනය කිරීම සිදු නොවනු ඇතැයි මම සිතමි.

එය දැනට ඔබට හොඳම දේ ලෙස පෙනේ. ඒ හා සමානව, ඔබේ යෙදුම වෙබයට ගෙනයාමට උත්සාහ නොකිරීමට මම ඔබට උපදෙස් දෙමි, මන්ද ඔබ ඇන්ඩ්‍රොයිඩ් සමඟ වාර්තා කර ඇති ගැටළු කිහිපයක්ම වෙබ් යෙදුම්වලද ඔබට පෙනෙනු ඇත (උදා: "අවසන් කිරීම" නැත). හෝ, අනෙක් අතට, ඔබ යම් දවසක නම් කරන්න වෙබ් කිරීමට වරාය ඔබගේ යෙදුම, ඔබ වෙබ් යෙදුමේ ගලා Android සඳහා වඩා හොඳ තරගයක් විය හැකි අතර ඔබට ඒ කාලයේ ඇන්ඩ්රොයිඩ් වරාය නැවත නැවත ඒකම හැකි බව විය හැක.


21
එක් සිතුවිල්ලක් මගේ ඔළුවට ගසාගෙන ගියේය: මම මුළු යෙදුමම සේවාවක් ලෙස නැවත ලිවුවහොත් සහ එම සේවාව සැබෑ යෙදුම ලෙස සලකන්නේ නම් - සමහර විට එය වඩා හොඳ වනු ඇත? එවිට සේවාවේ අඩංගු දත්ත ඉදිරිපත් කිරීම සඳහා මට ක්‍රියාකාරකම් (ඇන්ඩ්‍රොයිඩ් වලට අවශ්‍ය පරිදි) "ගොළු" කළ හැකිය. එවැනි අවස්ථාවක, මට සමහර විට පුරනය වීමේ තත්වය සහ වෙනත් දේවල් එහි තබා ගත හැකිය. StartForeground භාවිතා කරමින් (int, Notification) මට ඇන්ඩ්‍රොයිඩ් සේවාව killing ාතනය කිරීමෙන් වළක්වා ගත හැකිය ...?
ටෙඩ්

66
"මගේ පරිශීලකයින් වෘත්තිකයන් බව කරුණාවෙන් සලකන්න, මම ඇන්ඩ්‍රොයිඩ් වෙත වරාය කිරීමට උත්සාහ කරන යෙදුම භාවිතා කිරීමේ එකම අරමුණ සඳහා උපාංගය භාවිතා කරමි." ඇත්ත වශයෙන්ම, ඔබ වෙනත් ආකාරයකින් ඇඟවුම් කර ඇත ("ඔවුන්ට දුරකථන ඇමතුමක් ලැබෙන සෑම විටම එය කළ නොහැක" - "දුරකථන ඇමතුමක්" ඔබගේ යෙදුම නොවේ). එපමණක් නොව, ඔබ ඔබේම උපාංගයක් සාදන්නේ නැත්නම්, වෙනත් අය තෝරා ගන්නේ නම් ඔවුන් වෙනත් යෙදුම් ස්ථාපනය කිරීමෙන් වළක්වා ගත නොහැක.
කොමන්ස්වෙයාර්

25
OmeSomeCallMeTim: නැත, එය භාවිතා කිරීමට වලංගු හේතුවක් නොවේ killProcess(). වඩා හොඳ iOS කේත ලිවීමට එය වලංගු හේතුවකි.
කොමන්ස්වෙයාර්

24
Om කොමන්ස්වෙයාර්: කණගාටුයි, නමුත් එය මට කිසිඳු ප්‍රයෝජනයක් නැති සත්‍ය පිළිතුරකි. මම වරායට ගෙවන ලද කේතය පෝට් කරමි. මම වරාය කිරීම, ඔවුන්ගේ කේතය නැවත ලිවීම හෝ මගේ සේවායෝජකයාගේ පිරිවැය අඩු කරන ආකාරයට එය සිදු කළ යුතුද? කෙසේ වෙතත් එය සම්පුර්ණයෙන්ම ශාස්ත්‍රීය ප්‍රශ්නයකි: iOS හි වෙනස්කම් පරීක්ෂා කිරීමට මට නොහැකි බැවින් ඔවුන්ගේ එන්ජිමේ එවැනි විශාල වෙනස්කම් කිරීමට ඔවුන් කැමති නැත. එය සරලවම වැරදියි: සුදුසු වස්තූන් සඳහා සිංගල්ටන් රටා භාවිතා කිරීම ගැන "නරක" කිසිවක් නැත. ඇන්ඩ්‍රොයිඩ් යනු බිඳුණු WRT NDK යෙදුම් පමණි.
SomeCallMeTim

10
Reliable වඩාත් විශ්වාසදායක නැවත පණ ගැන්වීම සඳහා, සමහර විට ඔබට ක්‍රියාකාරකම හෝ සේවාව තුළ ගබඩා කර ඇති රාජ්‍ය ප්‍රමාණය අවම කළ හැකිය. ඒ වෙනුවට, ක්‍රියාකාරකම් හෝ සේවාව ආරම්භ වන සෑම අවස්ථාවකම ඔබ “මුල සිටම” ප්‍රතිනිර්මාණය කරන බොහෝ රාජ්‍ය සහ කේත වෙනම පන්තියක තබන්න.
Qwertie

291

මෙම ත්‍රෙඩ් එකේ අනාගත පා readers කයන් සඳහා නිවැරදි කිරීමක් මෙහි එක් කිරීමට මම කැමතියි. මෙම විශේෂිත සූක්ෂ්මතාවය දිගු කලක් තිස්සේ මගේ අවබෝධයෙන් ගැලවී ඇති බැවින් ඔබ කිසිවෙකු එකම වැරදි නොකරන බවට වග බලා ගැනීමට මට අවශ්‍යය:

System.exit()ඔබට එකකට වඩා ක්‍රියාකාරකම් තිබේ නම් ඔබගේ යෙදුම විනාශ නොකරයි. ඇත්ත වශයෙන්ම සිදුවන්නේ , ක්‍රියාවලිය මරා දමා වහාම එක අඩු ක්‍රියාකාරකමක් සමඟ නැවත ආරම්භ කිරීමයි. ෆෝර්ස් ක්ලෝස් සංවාදයෙන් ඔබගේ යෙදුම is ාතනය වූ විට හෝ ඩීඩීඑම්එස් වෙතින් ක්‍රියාවලිය විනාශ කිරීමට උත්සාහ කළ විටත් සිදු වන්නේ මෙයයි. මෙය මගේ දැනුමට අනුව සම්පූර්ණයෙන්ම ලේඛනගත නොවූ සත්‍යයකි.

කෙටි පිළිතුර නම්, ඔබට ඔබගේ යෙදුමෙන් පිටවීමට අවශ්‍ය නම්, ඔබේ තොගයේ ඇති සියලුම ක්‍රියාකාරකම් සහ finish()පරිශීලකයාට පිටවීමට අවශ්‍ය වූ විට ඒවා සියල්ලම නිරීක්ෂණය කළ යුතුය (සහ නැත, ක්‍රියාකාරකම් තොගය හරහා නැවත යෙදීමට ක්‍රමයක් නොමැත , එබැවින් ඔබ මේ සියල්ල ඔබම කළමනාකරණය කළ යුතුය). මෙය පවා ඇත්ත වශයෙන්ම ක්‍රියාවලිය හෝ ඔබට ඇති විය හැකි අනතුරු ඇඟවීම් විනාශ නොකරයි. එය හුදෙක් ක්‍රියාකාරකම් අවසන් කරයි. එසේම, Process.killProcess(Process.myPid())වඩා හොඳ ක්‍රියා කරයිදැයි මට විශ්වාස නැත ; මම එය අත්හදා බැලුවේ නැත.

අනෙක් අතට, ඔබේ තොගයේ ක්‍රියාකාරකම් තිබීම ඔබට කමක් නම්, ඔබට දේවල් පහසු කරවන තවත් ක්‍රමයක් තිබේ: Activity.moveTaskToBack(true)ඔබේ ක්‍රියාවලිය පසුබිම් කර නිවසේ තිරය පෙන්වනු ඇත.

දීර් answer පිළිතුරට මෙම හැසිරීම පිටුපස ඇති දර්ශනය පැහැදිලි කිරීම ඇතුළත් වේ. දර්ශනය උපත් ගණනාවකින් උපත ලබා ඇත:

  1. පළමුවෙන්ම, මෙය සිදුවන්නේ ඔබගේ යෙදුම පෙරමුණේ ඇති විට පමණි. එය පසුබිමේ තිබේ නම් ක්‍රියාවලිය ඉතා හොඳින් අවසන් වේ. කෙසේ වෙතත්, එය පෙරබිමෙහි තිබේ නම්, මෙහෙයුම් පද්ධතිය උපකල්පනය කරන්නේ පරිශීලකයාට ඔහු / ඇය කරමින් සිටි ඕනෑම දෙයක් දිගටම කරගෙන යාමට අවශ්‍ය බවය. (ඔබ ඩීඩීඑම්එස් වෙතින් ක්‍රියාවලිය විනාශ කිරීමට උත්සාහ කරන්නේ නම්, ඔබ මුලින්ම නිවාස බොත්තම එබිය යුතුය, පසුව එය මරා දමන්න)
  2. එක් එක් ක්‍රියාකාරකම අනෙක් සියලුම ක්‍රියාකාරකම් වලින් ස්වාධීන බව ද උපකල්පනය කරයි. මෙය බොහෝ විට සත්‍ය වේ, උදාහරණයක් ලෙස ඔබගේ යෙදුම බ්‍රව්සර් ක්‍රියාකාරකම දියත් කරන අතර එය සම්පූර්ණයෙන්ම වෙනම වන අතර ඔබ විසින් ලියන ලද්දක් නොවේ. බ්රවුසරයේ ක්රියාකාරිත්වය එහි ප්රකාශිත ගුණාංග මත පදනම්ව එකම කාර්යයක් මත නිර්මාණය කළ හැකිය.
  3. ඔබගේ සෑම ක්‍රියාකාරකමක්ම මුළුමනින්ම ස්වයං විශ්වාසය තබා ඇති අතර එය මොහොතකින් දැනුම් දීමෙන් මරා දැමිය හැකිය / ප්‍රතිෂ් ored ාපනය කළ හැකිය. (මගේ යෙදුම තුළ කාර්යක්ෂමව serialized කිරීමට ඉතා විශාල කැච් දත්ත විශාල ප්රමාණයක් මත රඳා බොහෝ ක්රියාකාරකම්, එතැන් සිට මම ඒ වෙනුවට, මෙම විශේෂ උපකල්පනය අකමැති onSaveInstanceStateබොහෝ සඳහා හොඳින් ලියා ඇන්ඩ්රොයිඩ් මෙම සත්ය විය යුතුය යෙදුම්, නමුත් whaddya මොකද්ද කරන්නේ?) ඔබගේ යෙදුම පසුබිමේදී විනාශ වන්නේ කවදාදැයි ඔබ නොදන්නා බැවින්.
  4. අවසාන සාධකය එතරම් උපකල්පනයක් නොව මෙහෙයුම් පද්ධතියේ සීමාවකි: යෙදුම පැහැදිලිවම killing ාතනය කිරීම යෙදුම බිඳ වැටීම හා සමාන වන අතර මතකය නැවත ලබා ගැනීම සඳහා ඇන්ඩ්‍රොයිඩ් යෙදුම විනාශ කිරීම හා සමාන වේ. මෙය අපගේ කුමන්ත්‍රණකාරී ක්‍රියාවෙන් අවසන් වේ: යෙදුම පිටව ගොස් හෝ බිඳ වැටී ඇත්දැයි පසුබිමේදී ඇන්ඩ්‍රොයිඩ්ට පැවසිය නොහැකි බැවින්, පරිශීලකයා ඔවුන් නතර කළ තැනට ආපසු යාමට අවශ්‍ය යැයි උපකල්පනය කරයි, එබැවින් ක්‍රියාකාරකම් කළමනාකරු ක්‍රියාවලිය නැවත ආරම්භ කරයි.

ඔබ ඒ ගැන සිතන විට, මෙය වේදිකාවට සුදුසු වේ. පළමුවෙන්ම, ක්‍රියාවලිය පසුබිමේදී and ාතනය වී පරිශීලකයා නැවත ඒ වෙත පැමිණෙන විට සිදු වන්නේ මෙයයි, එබැවින් එය නතර වූ තැන නැවත ආරම්භ කළ යුතුය. දෙවනුව, යෙදුම බිඳ වැටී භයානක බල වසා දැමීමේ සංවාදය ඉදිරිපත් කරන විට සිදු වන්නේ මෙයයි.

මගේ පරිශීලකයින්ට පින්තූරයක් ගෙන එය උඩුගත කිරීමට හැකිවීම මට අවශ්‍ය යැයි පවසන්න. මම කැමරාවේ ක්‍රියාකාරකම් මගේ ක්‍රියාකාරකමෙන් දියත් කර රූපයක් ආපසු ලබා දෙන ලෙස ඉල්ලා සිටිමි. කැමරාව මගේ වර්තමාන කාර්යයේ මුදුනට තල්ලු කරනු ලැබේ (එහි කාර්යයේම නිර්මාණය කරනවාට වඩා). කැමරාවේ දෝෂයක් ඇති අතර එය බිඳ වැටේ නම්, එහි ප්‍රති result ලය මුළු යෙදුමම බිඳ වැටිය යුතුද? පරිශීලකයාගේ දෘෂ්ටි කෝණයෙන්, කැමරාව පමණක් අසමත් වූ අතර, ඔවුන් පෙර ක්‍රියාකාරිත්වයට ආපසු යා යුතුය. එබැවින් එය කැමරාව us ණ කොට, තොගයේ ඇති එකම ක්‍රියාකාරකම් සමඟ ක්‍රියාවලිය නැවත ආරම්භ කරයි. ඔබගේ ක්රියාකාරකම් සිට යුතු ඔවුන් තොප්පියක් පතන ඝාතනය, යථා තත්වයට පත් කිරීමට හැකි වන පරිදි නිර්මාණය කර, මෙම ගැටලුව විය යුතු නොවේ. අවාසනාවට, සියලුම යෙදුම් ඒ ආකාරයෙන් නිර්මාණය කළ නොහැක, එබැවින් එය එසේ වේරොමේන් ගයි හෝ වෙනත් කිසිවෙකු ඔබට කුමක් කීවත් අප බොහෝ දෙනෙකුට ගැටලුවක්. එබැවින්, අපි වැඩකිරීම් භාවිතා කළ යුතුය.

ඉතින්, මගේ අවසාන උපදෙස්:

  • ක්රියාවලිය kill ාතනය කිරීමට උත්සාහ නොකරන්න. එක්කෝ finish()සියලු ක්‍රියාකාරකම් අමතන්න හෝ අමතන්න moveTaskToBack(true).
  • ඔබගේ ක්‍රියාවලිය බිඳ වැටුණහොත් හෝ මිය ගියහොත්, මා වැනි, ඔබට දැන් මතකයේ තිබූ දත්ත අවශ්‍ය නම්, දැන් නැති වී ඇති, ඔබට මූල ක්‍රියාකාරකම් වෙත ආපසු යා යුතුය. මෙය සිදු කිරීම සඳහා, ඔබ ධජය startActivity()අඩංගු අභිප්‍රායයකින් ඇමතිය යුතුය Intent.FLAG_ACTIVITY_CLEAR_TOP.
  • ඔබේ යෙදුම සූර්යග්‍රහණ ඩීඩීඑම්එස් දෘෂ්ටිකෝණයෙන් මරා දැමීමට ඔබට අවශ්‍ය නම්, එය පෙරබිමෙහි නොසිටීම හොඳය, නැතහොත් එය නැවත ආරම්භ වේ. ඔබ මුලින්ම මුල් පිටුව බොත්තම ඔබන්න, ඉන්පසු ක්‍රියාවලිය විනාශ කරන්න.

8
ඇත්ත වශයෙන්ම, මම නැවතත් ඇන්ඩ්‍රොයිඩ් සමඟ ආරම්භ කළ බැවින් මම සියලු ක්‍රියාකාරකම් අවසන් කරමි (ඕනෑම වේලාවක එක් ක්‍රියාකාරකමක් පමණක් ක්‍රියාත්මක වේ), ඉන්පසු මම System.exit (0) අමතන්නෙමි; මගේ සේවයේ - එය මට අවශ්‍ය ආකාරයටම ක්‍රියාත්මක වේ. බොහෝ පීපීඑල් "එය නොකරන්න" යැයි මම දනිමි, නමුත් එම පියවර සමඟ මට අවශ්‍ය හැසිරීම හරියටම ලැබෙනු ඇත ...
ටෙඩ්

13
සමහර විට ක්‍රියාවලිය illing ාතනය කිරීම ඉතා ප්‍රයෝජනවත් වේ - නිදසුනක් ලෙස ස්වදේශීය කේතය භාවිතා කරන ක්‍රීඩා ලිවීමේදී. ක්‍රියාවලිය illing ාතනය කිරීම යනු වෙන් කළ සියලු මතකය වහාම පද්ධතියට මුදා හැරීමයි.
සුල්තාන්

10
සැලකිලිමත් වන ඕනෑම කෙනෙකුට, Process.killProcess මඟින් System.exit ()
පැසිෆික් ස්කයි

6
සියලුම ක්‍රියාකාරකම් පොදු ක්‍රියාකාරකම් පදනමකින් ලබා ගන්න. යෙදුම වසා දැමීමට බල කිරීම සඳහා ධජයක් තබා ගන්න, onResume හි බලයේ සමීප ධජය සකසා තිබේදැයි පරීක්ෂා කරන්න. එසේ නම් System.exit (0) අමතන්න; මෙය සමස්ත ක්‍රියාකාරකම් තොගය හරහා ගමන් කර අවසානයේ යෙදුම සම්පූර්ණයෙන්ම වසා දමනු ඇත.
නාර් ගාර්

12
සත්‍ය පිළිතුරු සැපයීම ගැන ස්තූතියි ( moveTaskToBack()මා සොයමින් සිටියේ එයයි). බොහෝ අය පවසන්නේ "නෑ ඔබ කවදාවත් ඔබේ යෙදුමෙන් ඉවත් වීමට කැමති මෝඩයෙක්" කියාය. ඔබට අවශ්‍ය අවස්ථාවන් තිබිය හැකි යැයි නොසිතා (උදා: අසාර්ථක පිවිසුම්).
ටිම්ම්ම්

182

මගේ සියලුම යෙදුම් වලින් ඉවත්වීමේ බොත්තම් ඇත ... ඒ නිසා මම නිතරම පරිශීලකයින්ගෙන් ධනාත්මක අදහස් ලබා ගනිමි. යෙදුම් අවශ්‍ය නොවන ආකාරයෙන් වේදිකාව නිර්මාණය කර ඇත්දැයි මට ප්‍රශ්නයක් නැත. "ඔවුන්ව එහි තබන්න එපා" යැයි පැවසීම හාස්‍යජනකය. පරිශීලකයාට ඉවත් වීමට අවශ්‍ය නම් ... මම ඔවුන්ට එය හරියටම කිරීමට ප්‍රවේශය ලබා දෙමි. ඇන්ඩ්‍රොයිඩ් කිසිසේත්ම ක්‍රියාත්මක වන ආකාරය අඩු කරන අතර එය හොඳ පුහුණුවක් සේ පෙනේ. මට ජීවන චක්‍රය තේරෙනවා ... මගේ නිරීක්‍ෂණය වී ඇත්තේ ඇන්ඩ්‍රොයිඩ් එය හැසිරවීමේදී හොඳ කාර්යයක් නොකරන බවයි .... එය මූලික කරුණකි.


16
+1 අවාසනාවකට එය මේ මොහොතේ එතරම් හොඳ කාර්යයක් නොකරන නිසා (නමුත් මට තවමත් සැලසුම් කර ඇති පරිදි දේවල් කිරීමට උත්සාහ කිරීමට අවශ්‍යය, එබැවින් එය මා අවුල් ජාලයකට ඇද දමයි)
රිචඩ් ලෙ මෙසුරියර්

26
ඉවත් වීමට ඔබ භාවිතා කරන යාන්ත්‍රණය කුමක්ද?
ගැරී රුඩොල්ෆ්

4
G ඉගෝර් නිමාව () - ක්‍රියාකාරකම් යෙදුම විනාශ නොකරයි (යෙදුම දීර් s කරයි). එබැවින් කිසිදු ක්‍රියාකාරකමක් සක්‍රිය නොවූ විට පවා සැකසුම් තවමත් ක්‍රියාකාරී හා සත්‍ය වේ, එනම් ක්‍රියාකාරකම් ඒවාට ප්‍රවේශ වීමට උත්සාහ කරන විට ඒවා කලින් භාවිතා කළ ඒවා වේ. System.exit (0); අනෙක් අතට යෙදුම විනාශ කරයි, එනම් නැවත ආරම්භ කරන විට යෙදුමට නැවත සිට සැකසුම් ආරම්භ කිරීමට සිදුවේ. මගේ යෙදුම අතින් යාවත්කාලීන කිරීමේදී මට අවශ්‍ය වන්නේ එයයි, මන්ද මම නිතරම දත්තවල ආකෘතිය වෙනස් කරන අතර ඒවා වහාම නැවත ආරම්භ කිරීම අවශ්‍ය වේ.
නාර් ගාර්

1
හොඳයි, මේ මොහොතේ මට අවශ්‍ය දේ ඉටු කිරීමට ඇති එකම ක්‍රමය එයයි. යෙදුම යාවත්කාලීන වූ විට මම system.exit භාවිතා කරමි (එසේ නොමැතිනම් මගේ කේත වෙනස්වීම් මත පදනම්ව මට අනුක්‍රමිකකරණය හෝ පන්ති වාත්තු ව්‍යතිරේකයන් ලැබෙනු ඇත). System.exit හරහා යෙදුම kill ාතනය කිරීම සඳහා මම පරිශීලකයාට UI හසුරුව ලබා නොදෙන බව සඳහන් කළ යුතුය - යෙදුම සම්පූර්ණයෙන්ම මුදා හැරීමට අවශ්‍ය වූ විට පමණක් එය භාවිතා කිරීමට යෙදුමේ ඉංජිනේරුවරයා ලෙස මා වෙන් කර ඇත. ඉතිරි කාලය සරල නිමාවක් () (හෝ පෙරනිමි පසුපස බොත්තම මෙහෙයුම) භාවිතා කරයි.
නාර් ගාර්

14
ඔව් .. ඇන්ඩ්‍රොයිඩ් ප්‍රමිතියකින් තොරව නිරයට .. ඇන්ඩ්‍රොයිඩ් බලවත් කෝස්, එය මිනිසුන්ට අත්හදා බැලීමට ඉඩ සලසයි .. එය යමක් කිරීමට ඒපීඅයි සපයන්නේ නම්, එය ඇන්ඩ්‍රොයිඩ් ප්‍රමිතිය නොවන බව යමෙකු පවසන්නේ කෙසේද? ඒ සියලු දාර්ශනික පිළිතුරු මට ජීර්ණය කළ නොහැක. ඔබ ඔබේ පරිශීලකයින් මතකයේ තබා ගනිමින් යෙදුම සාදයි. ඔවුන් සතුටින් සිටී නම් හෝ ඔවුන්ට මෙම අංගය දැකීමට අවශ්‍ය නම්, ඊනියා දාර්ශනිකයන් ඊට විරුද්ධ වුවද එය ක්‍රියාත්මක කිරීම නියත ය.
රාහුල්

144

ඔබගේ යෙදුම මොනොලිතික් යෙදුමක් ලෙස සිතීම නවත්වන්න. එය පරිශීලකයාට ඔබගේ "යෙදුම" සහ ඇන්ඩ්‍රොයිඩ් සේවාවන් හරහා ලබා දී ඇති "කාර්යයන්" සමඟ අන්තර් ක්‍රියා කළ හැකි UI තිර සමූහයකි.

ඔබගේ අද්භූත යෙදුම "කරන්නේ" කුමක්දැයි නොදැන සිටීම ඇත්තෙන්ම වැදගත් නොවේ. එය සමහර සුපිරි ආරක්ෂිත ආයතනික අන්තර් ජාලයකට උමං මාර්ගයක් යැයි උපකල්පනය කරමු, යම් අධීක්ෂණයක් හෝ අන්තර්ක්‍රියාකාරිත්වයක් සිදු කරමින් පරිශීලකයා "යෙදුමෙන් ඉවත් වන තුරු" ලොග් වී ඇත. ඔබේ තොරතුරු තාක්ෂණ දෙපාර්තමේන්තුව එය අණ කරන නිසා, පරිශීලකයින් අන්තර් ජාලය තුළ හෝ පිටත සිටින විට ඔවුන් දැනුවත් විය යුතුය. එබැවින් පරිශීලකයින්ට "ඉවත්වීම" වැදගත් යැයි ඔබේ මනස වැදගත් වේ.

මෙය සරලයි. "මම අන්තර් ජාලයේ සිටිමි, නැතහොත් මම ධාවනය කරමි" යනුවෙන් දැනුම් දීමේ තීරුවේ අඛණ්ඩ දැනුම්දීමක් කරන සේවාවක් කරන්න. ඔබේ යෙදුම සඳහා අවශ්‍ය සියලුම ක්‍රියාකාරකම් එම සේවාව ඉටු කරන්න. ඔබේ පරිශීලකයින්ට ඔබේ "යෙදුම" සමඟ අන්තර් ක්‍රියා කිරීමට අවශ්‍ය UI බිටු වලට ප්‍රවේශ වීමට ඉඩ දීම සඳහා එම සේවාවට බැඳී ඇති ක්‍රියාකාරකම් කරන්න. ඇන්ඩ්‍රොයිඩ් මෙනුවක් -> ඉවත්ව යන්න (හෝ ලොග්අවුට් හෝ වෙනත් ඕනෑම දෙයක්) බොත්තමක් ඇති අතර එමඟින් සේවයෙන් ඉවත් වන ලෙස පවසන අතර පසුව එම ක්‍රියාකාරකම වසා දමයි.

මෙය, සියලු අභිප්‍රායන් සහ අරමුණු සඳහා ඔබට අවශ්‍ය යැයි කියන දේම වේ. ඇන්ඩ්‍රොයිඩ් ක්‍රමය කළා. මෙම "පිටවීම" පිළිබඳ උදාහරණ සඳහා ගූගල් කතා හෝ ගූගල් සිතියම් සංචලනය දෙස බලන්න. එකම වෙනස වන්නේ පරිශීලකයාට ඔබගේ යෙදුම නැවත පණ ගැන්වීමට අවශ්‍ය වූ විට ඔබගේ ක්‍රියාකාරකම් වලින් පිටත බොත්තම එබීමෙන් ඔබගේ යුනික්ස් ක්‍රියාවලිය රැඳී සිටීමට ඉඩ තිබීමයි. මෙය සැබවින්ම නවීන මෙහෙයුම් පද්ධතියකට වඩා වෙනස් නොවේ. ඔබ ඔබේ වින්ඩෝස් වැඩසටහනෙන් ඉවත් වූ පසු, අවශ්‍ය බොහෝ සම්පත් තවමත් මතකයේ පවතින අතර, ඒවා තවදුරටත් අවශ්‍ය නොවන බැවින් දැන් පටවා ඇති බැවින් වෙනත් සම්පත් ආදේශ කිරීමට බලා සිටී. ඇන්ඩ්‍රොයිඩ් යනු එකම දෙයකි.

මට ඇත්තටම ඔබේ ගැටලුව නොපෙනේ.


3
@ එරික්, ඔබ ගැටලුව නොපෙනෙන්නේ ඔබ එයින් පලා යන බැවිනි. "ඇන්ඩ්‍රොයිඩ් මොඩලයට" කළ නොහැකි දේ කිරීමට ඔබ පැරණි "වැඩසටහන් ආකෘතිය" මත ධාවනය වන තවත් වැඩසටහනක් භාවිතා කළේය. "ඇන්ඩ්‍රොයිඩ් මාදිලියේ" ගැටලුව බැලීමට, ඔබට ලිනක්ස් / වින්ඩෝස් පෙට්ටි වෙත කාර්යයන් පැවරීමේ සුඛෝපභෝගී බවක් නොමැති බව සිතිය යුතුය. "ඇන්ඩ්‍රොයිඩ් මාදිලිය" ධාවනය කරන පෙට්ටි පමණක් සමඟ ඉදිරිපස සිට පසුපස කොටස දක්වා සෑම දෙයක්ම කිරීමට ඔබට බල කෙරෙනු ඇතැයි ඔබ සිතිය යුතුය. එවිට, "ඇන්ඩ්‍රොයිඩ් මාදිලියේ" සීමාවන් අහස තරම් පැහැදිලි බව ඔබට පෙනෙනු ඇත.
පැසීරියර්

ඔබගේ යෙදුම මොනොලිතික් යෙදුමක් ලෙස සිතන්න. එය ජාවා භාෂාවෙන් ලියා ඇති අතර එය තනි ජේවීඑම් (ජාවා අතථ්‍ය යන්ත්‍ර) ක්‍රියාවලියක් මඟින් ක්‍රියාත්මක වේ. System.exit () JVM වෙතින් පිටවන අතර සියලුම UI තිර සහ සියල්ල සම්පූර්ණයෙන්ම හා සම්පූර්ණයෙන්ම අවසන් කරයි. මෙයට ව්‍යතිරේකය නම්, ක්‍රමලේඛකයා බහුවිධ ක්‍රියාවලීන්හි ක්‍රියාත්මක වන නූල් සැකසීමේ කරදරයට පත්වුවහොත් - නමුත් පෙරනිමියෙන් එය එසේ නොවන අතර ගූගල් සමාගමට අනුව සාමාන්‍යයෙන් එය නොකළ යුතුය.
ජෙසී ගෝර්ඩන්

Es ජෙසගෝර්ඩන් මෙය සත්‍යයක් නොවේ. System.exit()ක්‍රියාකාරකම ඉවත් කරන්නේ තොගයෙන් පමණි. ජේවීඑම් වහාම නැවත ආරම්භ කෙරේ. මෙම පිළිතුර බලන්න .
forresthopkinsa

1
@forresthopkinsa හරි මම එය ඇන්ඩ්‍රොයිඩ් 7.0 හි පරීක්ෂා කර ඇත්තෙමි. සරල තනි නූල් යෙදුමක් තවමත් එම යෙදුමටම ආවේණික වූ පරිශීලක හැඳුනුම්පතක් ලෙස ක්‍රියාත්මක වන ජේවීඑම් උදාහරණයකින් ක්‍රියාත්මක වේ. මෙම පරීක්ෂණය සඳහා මම තවමත් බහු-නූල් යෙදුමක් උත්සාහ කර නැත. System.exit () තවමත් එම යෙදුම සඳහා මුළු JVM මරා දමයි. System.exit () ප්‍රාථමික ක්‍රියාකාරකමෙන් කැඳවනු ලැබුවහොත් එය පිටවෙයි. System.exit () උප ක්‍රියාකාරීත්වයකින් කැඳවනු ලැබුවහොත්, ජේවීඑම් තවමත් මිය ගොස් ඇත, නමුත් ඇන්ඩ්‍රොයිඩ් එය නව / ක්‍රියාවලි හැඳුනුම්පතක් යටතේ නැවත ආරම්භ කරයි. android.os.Process.killProcess (android.os.Process.myPid ()); <pid> මරා දමන්න.
ජෙසී ගෝර්ඩන්

1
සිත්ගන්නාසුලු .. ඔබ සම්බන්ධ කළ පිළිතුර දෙස බලන විට, @forresthopkinsa, ඇන්ඩ්‍රොයිඩ් වෙබ් බ්‍රව්සර් මෙන් ක්‍රියා කරන බවක් පෙනේ, පද්ධතියකට පසු ක්‍රියාකාරකම් යථා තත්වයට පත් කරයි. එමඟින් පරිශීලකයා එය පිටව ගිය බවක් නොපෙනේ, නමුත් පිටවීමට හේතු වූ ක්‍රියාකාරකම් හැර. .? අමුතුයි. නමුත් කෙසේ හෝ, System.exit () කරන්නේ සමීප සියලු ක්රියාකාරකම් සහ නිදහස් () 'මතක ගේ හා යෙදුම සඳහා JVM කොමාව. නමුත් එය නැවත ආරම්භ කිරීමට / ප්‍රතිස්ථාපනය කිරීමට ඇන්ඩ්‍රොයිඩ් කරන්නේ කුමන ආකාරයේ කුහුඹුවන් දැයි මට අදහසක් නැත. යෙදුම් ler ාතක යෙදුම් වලක්වාලීමටද? එබැවින් මම සිතන්නේ යමෙකුට පිටවීමේ බොත්තමක් අවශ්‍ය නම් ඔවුන් එය ප්‍රධාන ක්‍රියාකාරකමට ඇතුළත් කළ යුතුය.
ජෙසී ගෝර්ඩන්

71

මෙය බොහෝ විශේෂ experts යින්ගේ දායකත්වය සමඟ සිත්ගන්නාසුළු හා බුද්ධිමත් සාකච්ඡාවකි. ඇන්ඩ්‍රොයිඩ් මෙහෙයුම් පද්ධතියේ එක් ප්‍රධාන සැලසුමක් වටා කැරකෙන බැවින් මෙම සටහන ඇන්ඩ්‍රොයිඩ් සංවර්ධන ප්‍රධාන වෙබ් අඩවිය තුළ සිට නැවත ලිවිය යුතු යැයි මට හැඟේ.

මගේ ශත දෙක මෙහි එකතු කිරීමට මම කැමතියි.

ඇන්ඩ්‍රොයිඩ් විසින් ජීවන චක්‍රීය සිදුවීම් හසුරුවන ආකාරය, වෙබ් වැනි අත්දැකීමක් පිළිබඳ සංකල්පය ස්වදේශීය යෙදුම් වෙත ගෙන ඒම පිළිබඳව මා මෙතෙක් පුදුමයට පත්විය.

Quitබොත්තමක් තිබිය යුතු යැයි මම තවමත් විශ්වාස කරන බව පැවසීමෙන් පසු . මන්ද? ... මා හෝ ටෙඩ් හෝ මෙහි සිටින ඕනෑම තාක්ෂණික ගුරුවරුන් සඳහා නොව, අවසාන පරිශීලක ඉල්ලුම සපුරාලීමේ එකම අරමුණ සඳහා ය.

මම වින්ඩෝස් හි විශාල රසිකයෙක් නොවුනත්, බොහෝ කලකට පෙර ඔවුන් බොහෝ අවසාන පරිශීලකයින් (X බොත්තමක්) භාවිතා කිරීමට භාවිතා කරන සංකල්පයක් හඳුන්වා දුන්හ ... "මට අවශ්‍ය විට විජට් එකක් ධාවනය කිරීමෙන් ඉවත් වීමට මට අවශ්‍යය".

එයින් අදහස් කරන්නේ යමෙකු (මෙහෙයුම් පද්ධතිය, සංවර්ධකයා?) එහි / ඔහුගේ / ඇයගේ අභිමතය පරිදි එය බලා ගනීවි යන්න නොවේ ... එයින් සරලවම අදහස් කරන්නේ "මගේ පුරුදු වී ඇති මගේ රතු X බොත්තම කොහේද" යන්නයි. මගේ ක්‍රියාව 'බොත්තමක් එබීමෙන් ඇමතුමක් අවසන් කිරීම', 'බොත්තමක් එබීමෙන් උපාංගය ක්‍රියා විරහිත කිරීම' සහ තවත් බොහෝ දේ සමාන විය යුතුය ... එය සංජානනයකි. මගේ ක්‍රියාව සැබවින්ම එහි අරමුණ සාක්ෂාත් කර ගැනීම ගැන තෘප්තියක් ගෙන දෙයි.

මෙහි දී ඇති යෝජනා භාවිතා කරමින් සංවර්ධකයෙකුට මෙම හැසිරීම නරක් කළ හැකි වුවද, සංජානනය තවමත් පවතී, එනම් අවසාන පරිශීලකයාගේ ඉල්ලීම මත ස්වාධීන, විශ්වාසදායක සහ උදාසීන ප්‍රභවයක් (ඕඑස්) විසින් යෙදුමක් සම්පූර්ණයෙන්ම ක්‍රියාත්මක වීම (දැන්) නතර කළ යුතුය.


2
හරි. හොඳ ඔල් වින්ඩෝස් මොබයිල් වින්ඩෝස් පීසී වලට සමාන එක්ස් බොත්තමක් ලබා දුන්නේය, එය ඇත්ත වශයෙන්ම යෙදුමෙන් ඉවත් නොවූවා හැර, එය “ස්මාර්ට් අවම” කළේය. බොහෝ පරිශීලකයින් යෙදුම සැබවින්ම ඉවත් වී නැති බව බොහෝ විට සොයාගෙන නැත. (මෙම ප්රවේශය, මහත් වූ, ඔබ .NET සංයුක්ත රාමුව භාවිතා නම්, යෙදුම මෙම සිදු වූ බව දැනුම් නොහැකි විය සහ ඒ නිසා නිදහස් සම්පත් විකල්පය ලැබුණේ නැහැ ඇත්තටම ඉවත් වුවත් වැඩ කළා.)
Qwertie

3
ඇත්ත වශයෙන්ම, මෙය ඔබේ පරිශීලකයින්ට උණුසුම්, නොපැහැදිලි හැඟීමක් ලබා දීම සඳහා බොරු කීමට සමාන වේ. අවසාන වශයෙන්, අතීතයේ ධාතූන් පාරේ වැටීමට ඉඩ දීම වඩා හොඳය, ඒවා තාක්‍ෂණයේ ස්ථිර සවිකිරීම් ලෙස දිගටම පවතිනු ඇත. ජංගම සහ වෙබ් යනු නව වේදිකා වන අතර ඩෙස්ක්ටොප් පරිගණක මෙන් හැසිරෙනු ඇතැයි අපේක්ෂා නොකෙරේ. අවම වශයෙන්, ඇන්ඩ්‍රොයිඩ් හි ජීවන චක්‍රීය තීරණ පරිශීලකයින්ගේ අවධානයට ලක්වන බවක් පෙනේ: මගේ විශාලතම යෙදුම එහි අවුරුදු 2 සංවත්සරය පසු කරන විට, "පිටවීමේ" බොත්තම් සඳහා අවසාන පරිශීලක ඉල්ලීම් ප්‍රවාහය පුරුදු වන විට වියළී යන බව මම දැක ඇත්තෙමි. නව වේදිකාව.
ජෝන් ඕ

2
On ජෝන් ඔබ නිර්දේශ කරන්නේ කුමක්ද? යෙදුමේ කොතැනකවත් 'පිටවීමේ' විකල්පයක් ලබා නොදෙන්නේද?
ඉගෝර්ගනාපොල්ස්කි

හොඳයි, පරිශීලකයෙකු පිටවීමේ බොත්තමක් ඉල්ලා සිටි විට, ඩෙස්ක්ටොප් එකකට වඩා වෙනස් ආකාරයකින් ක්‍රියා කරන ආකාරය මම ඔවුන්ට පැහැදිලි කරන්නෙමි (ඔවුන් කාර්ය kil ාතකයින් ගැන සඳහන් කරන විට මම ඔවුන්ට දෙන එකම පැහැදිලි කිරීම එයයි). දැන්, තොරතුරු හසු වී ඇති බවක් පෙනේ, මට තවදුරටත් එම ඉල්ලීම් ලැබෙන්නේ නැත. එබැවින්, එය කිහිප වතාවක් පැහැදිලි කිරීමට මම ඔබට නිර්දේශ කරමි (සමහර විට ටින් කළ ප්‍රතිචාරයක් සමඟ පැමිණ බොත්තම තබන්න. නැතහොත් පිටවීමේ බොත්තම් නොමැති වීමට හේතුව පැහැදිලි කරමින් සංවාදයක් මතු කරන ව්‍යාජ පිටවීමේ බොත්තමක් දමන්න. : D (එසේම ඇන්ඩ්‍රොයිඩ් 4+ හි පරිශීලකයෙකුට එය "මරා දැමීමට" බහු කාර්ය සංදර්ශකයේ "ඕෆ්" යෙදුමක් ස්වයිප් කළ හැකිය.)
ජෝන් ඕ

3
“ක්‍රියාවලිය විනාශ නොකරන්න” යැයි කියමින් සියලු උපදෙස් පිටුපස තර්කණය මට හමු නොවීය. මගේ මතය අනුව, පාරිභෝගිකයා සැමවිටම නිවැරදිය, එබැවින් පිටවීමේ බොත්තමක් ඉල්ලා සිටීමෙන් පසු සහ "ඔබේ පරිශීලකයින්ට උණුසුම්, නොපැහැදිලි හැඟීමක් ලබා දෙන ලෙස බොරු කීම" වැරදියි, එය ඔවුන්ට අවශ්‍ය නම්? හොඳ යෙදුම් ලිවීම යනු මෙයයි. බොහෝ පරිශීලකයින් ඇත්ත වශයෙන්ම කබාය යටතේ සිදුවන්නේ කුමක්දැයි නොදනිති, නමුත් ඔවුන් ඔබේ යෙදුමට කැමති නම් සහ එය ඔවුන්ට අවශ්‍ය හා අපේක්ෂා කරන දේ කරන්නේ නම්, ඔවුන් නැවත පැමිණ ඔබගේ තවත් යෙදුම් මිලදී ගනු ඇත. ඒක තමයි අපි හැමෝටම ඕනේ, එහෙම නේද? නැත්නම් මට යමක් මග හැරී තිබේද?
ඩීඩීඑස්පෝර්ට්ස්

37

බොත්තම එබීමෙන් හෝ ඔබගේ ඇමතුමෙන් ඔබට ඉවත් විය හැකිය . ඔබට එය පැහැදිලිවම මරා දැමීමට අවශ්‍ය නම් a වෙතින් අමතන්න .Backfinish()Activityfinish()MenuItem

රොමේන් එය කළ නොහැකි යැයි නොකියයි, එය තේරුමක් නැති දෙයක් - පරිශීලකයින් තම වැඩ අත්හැරීම හෝ ඉතිරි කිරීම ගැන සැලකිලිමත් විය යුතු නැත, යෙදුම් ජීවන චක්‍රය ක්‍රියා කරන ආකාරය ස්වයංක්‍රීයව සුරකින ස්මාර්ට් මෘදුකාංගයක් ලිවීමට ඔබව දිරිමත් කරයි. කුමක් සිදු වුවද එහි තත්වය යථා තත්වයට පත් කරයි.


5
එය යම් අරමුණක් පුරවන්නේ නම් එය තේරුමක් නැති අතර අපගේ යෙදුම තුළ එය එසේ කරයි. උදාහරණයක් ලෙස, යෙදුමෙන් පිටවන විට යාවත්කාලීන කිරීම් පරීක්ෂා කිරීමට අපට අවශ්‍යය. අපට යෙදුමෙන් පිටවිය නොහැක, එවිට යාවත්කාලීන කිරීමක් කළ නොහැක. සමහර අදහස් දැක්වෙන්නේ පසුපස බොත්තම එබීමෙන් යෙදුම කිසිසේත් විනාශ නොවන බවයි (ඉහත මගේ ප්‍රශ්නයේ සබැඳිය බලන්න).
ටෙඩ්

2
රොමේන් පවසන පරිදි, එය මූලික යෙදුම් ක්‍රියාත්මක වන ආකාරය නොවේ. එබැවින් යෙදුමෙන් ඉවත් වීමට පරිශීලකයින් "ආපසු" එබීමට පුරුදු වී සිටී නම්, ඔවුන් පැහැදිලිවම Quit තෝරා ගැනීමට වඩා ඔබේ යෙදුම සමඟ එය දිගටම කරගෙන යනු ඇතැයි සිතිය හැකිද? ඔබට ආරම්භයේදී හෝ ඩෙස්ට්‍රෝයි () හි යාවත්කාලීන පරීක්‍ෂණයක් කළ හැකිය, නැතහොත් නැවත නැවත අනතුරු ඇඟවීමක් භාවිතා කළ හැකිය .. එය පරිශීලකයෙකු විසින් අවුලුවන දෙයක් ලෙස නොපෙනේ.
ක්‍රිස්ටෝපර් ඕර්

1
ටොම්: මම දැන් අවුරුදු 5 කට ආසන්න කාලයක් වින්ඩෝස් මොබයිල් සඳහා කේතීකරණයේ යෙදී සිටිමි. එය "සීමිත සම්පත්" සහිත දුරකථනයකි. එබඳු හැසිරීමක් එහි නොමැති අතර, එම “ලොකු සහෝදරයා” තුළ එය ක්‍රියා නොකරන බවට ගැටළු නොමැත. "තාත්වික යෙදුම්" = එහිදී ක්‍රමලේඛකයාට වැඩි පාලනයක් ඇත, එනම් GUI- දේවල් ඉවත් කළ විට ඉවත්වීම යනාදිය ...
ටෙඩ්

1
ජේ: මන්ද එය තවමත් මතකයේ තිබේ නම්, මට සිතීමේ යෙදුම යාවත්කාලීන කළ නොහැක. භාවිතයේ ඇති ගොනු මකා දැමිය නොහැක, නේද? මට පිටවීමේදී යාවත්කාලීන කිරීමට අවශ්‍ය වන්නේ ආරම්භයේදීම යාවත්කාලීන කිරීමට අපගේ පරිශීලකයින්ට බල කළ නොහැකි බැවිනි. එය ඔවුන් වැඩ කරන ආකාරය හා ඔවුන්ට අවශ්‍ය දේ සමඟ සම්බන්ධ වේ. විවිධ හේතූන් මත ඔවුන්ගේ මාරුව ආරම්භයේදීම ඔවුන්ට යාවත්කාලීනයක් බල කිරීම සුදුසු නැත. එය ටිකක් සංකීර්ණයි.
ටෙඩ්

1
ජේ: නෑ, මම ඉහත සඳහන් කළ පරිදි එය වෙළඳපල යෙදුමක් නොවන අතර එය එසේ නොවේ. එය ඉතා විශේෂිත යෙදුමකි, සාමාන්‍ය භාවිතය සඳහා නොවේ.
ටෙඩ්

31

මෙම විවාදය සංවර්ධකයින් වඩාත්ම හොඳින් දන්නේද නැතහොත් පරිශීලකයා හොඳින් දන්නේද යන පැරණි ප්‍රශ්නයට තුඩු දෙයි. මානව සාධකවල සෑම අංශයකම වෘත්තීය නිර්මාණකරුවන් සෑම දිනකම මේ සමඟ පොරබදති.

ටෙඩ් විසින් වෙළඳපොලේ වැඩිපුරම බාගත කර ඇති යෙදුම්වලින් එකක් වන්නේ 'ඇප් ler ාතකයා' යන්නයි. අයදුම්පත් වලින් ඉවත් වන විට මිනිසුන්ට අමතර සෙරොටොනින් ටිකක් ලැබේ. ඔවුන් එයට පුරුදු වී ඇත්තේ ඩෙස්ක්ටොප් / ලැප්ටොප් ය. එමඟින් දේවල් වේගයෙන් ගමන් කරයි. එය ප්‍රොසෙසරය සිසිල් වන අතර විදුලි පංකාව ක්‍රියාත්මක කිරීමෙන් වළක්වයි. එය අඩු බලයක් භාවිතා කරයි.

ජංගම උපාංගයක් වඩා කුඩා නැවක් බව ඔබ සලකන විට, 'ඔබට තවදුරටත් අවශ්‍ය නොවන දේ උඩට විසි කිරීමට' ඔවුන් දක්වන දිරිගැන්වීම විශේෂයෙන් අගය කළ හැකිය. දැන් ඇන්ඩ්‍රොයිඩ් හි සංවර්ධකයින් තර්ක කර ඇත්තේ මෙහෙයුම් පද්ධතිය හොඳින් දන්නා බවත් යෙදුමක් අත්හැරීම පෞරාණික බවත්ය. මම මේ සඳහා මුළු හදින්ම සහාය දෙමි.

කෙසේ වෙතත්, ඔවුන්ගේම නොදැනුවත්කම නිසා එම කලකිරීම දරා සිටියද, ඔබ පරිශීලකයා කලකිරීමට පත් නොකළ යුතු යැයි මම විශ්වාස කරමි. එම හේතුව නිසා, මම නිගමනය කරන්නේ, 'ඉවත්වීම' විකල්පයක් තිබීම හොඳ නිර්මාණයක් වන අතර, එය බොහෝ විට ප්ලේසෙබෝ බොත්තමක් වුවද, එය දර්ශනයක් වැසීමට වඩා වැඩි යමක් නොකරයි.


8
ඔව්, 'ඉවත්වීම' බොත්තමක් තිබීම ඇත්තෙන්ම පරිශීලක-හිතකාමී ය. ක්‍රියාකාරකම් 5 ක් ගැඹුරින් නම් පරිශීලකයා යෙදුමෙන් ඉවත් වන්නේ කෙසේද? ඔවුන්ට කිහිප වතාවක්ම නැවත එබිය හැකි බව විශ්වාසයි, නමුත් මම හිතන්නේ නැහැ ඔවුන් එයට කැමති වේවි කියා.
ඉගෝර්ගනාපොල්ස්කි

4
5 ක් පමණක්ද? ඇන්ඩ්‍රොයිඩ් 2.2 වෙබ් බ්‍රව්සරය මා පිටවන තුරු පිටුපස බොත්තම තට්ටු කිරීමට මිනිත්තු කිහිපයක් ගත කරයි
ජෝ ප්ලාන්ටේ

3
ඇන්ඩ්‍රොයිඩ් සංවර්ධකයින් වැඩ කරන මතක කළමනාකරු දියුණු කරන විට මම ඔවුන්ට ඇහුම්කන් දෙන්නෙමි. ෆ්‍රෝයෝට අනුව, එය ඉතා දුර්වල ලෙස ක්‍රියා කළ අතර, අහඹු යෙදුම් විනාශ කිරීම, අවශ්‍ය නොවන යෙදුම් නැවත ආරම්භ කිරීම (සහ ඒවා නීත්‍යානුකූලව ආරම්භ කිරීමට කිසිදු අදහසක් නොමැත), සහ OTOH, මතකය 50MB නොමිලේ ලබා ගත් විට සම්පූර්ණ බඩගා යාමකට මන්දගාමී වේ.
DVK

10
ඇන්ඩ්‍රොයිඩ් කාර්ය ler ාතකයා “අනවශ්‍ය” බව ඔබේ ආගම පවසන විට, නමුත් ව්‍යාපාරයක් නොමැති ගොළු කාර්යයන් නැති කිරීමට ATK භාවිතා කිරීම මෙහෙයුම් පද්ධතිය සාමාන්‍ය වේගයෙන් ~ 1-5% දක්වා බඩගා යාමෙන් සාමාන්‍ය වේගයෙන් 100% දක්වා වෙනස් කරයි (සාමාන්‍ය වේගයෙන් 100% දක්වා) ATK ක 1000s හරහා කාලය) 100% ක් ගණනය වසර 2 කට අධික ලිඛිත තොරතුරු පද්ධතිය 50MB නිදහස් අඩු අවසන් පන්නයි ලොකු දේවල්, ඔබගේ ආගම වැරදි
DVK

@JoePlante ඔබට මුලින්ම විවෘත ටැබ් සහ කවුළු සියල්ල වසා දැමිය හැකි අතර පසුව ඉවත්වීම සඳහා පසුපස බොත්තම ඔබන්න. :) අවම වශයෙන් මගේ GS2 මත.
ldam

29

ටෙඩ්, ඔබ ඉටු කිරීමට උත්සාහ කරන දේ කළ හැකිය, සමහර විට ඔබ දැන් ඒ ගැන සිතන ආකාරය පමණක් නොවේ.

ක්‍රියාකාරකම් සහ සේවාවන් පිළිබඳව කියවීමට මම ඔබට යෝජනා කරමි. "යෙදුම" යන යෙදුම භාවිතා කිරීම නවතා සංරචක, එනම් ක්‍රියාකාරකම්, සේවාව වෙත යොමු කිරීම ආරම්භ කරන්න. මම හිතන්නේ ඔබ ඇන්ඩ්‍රොයිඩ් වේදිකාව ගැන වැඩි විස්තර දැනගත යුතුයි. එය සම්මත පරිගණක යෙදුමකින් මානසිකත්වයේ වෙනසක් වේ. ඔබගේ කිසිදු තනතුරක "ක්‍රියාකාරකම්" යන වචනය නොතිබීම (නිතර අසන පැන උපුටා දැක්වීමක කෙටි, එනම් ඔබේ වචන නොවේ) මට පවසන්නේ ඔබ තව ටිකක් කියවිය යුතු බවයි.


මම android.com = හි බොහෝ දේ කියවා ඇති අතර, ක්‍රියාකාරකම් ගැන කතා කරන මගේ ප්‍රශ්න කිහිපයකට සම්බන්ධ කළ හැකිය, එබැවින් එය සත්‍ය නොවේ (උදා: stackoverflow.com/questions/2032335/… හෝ stackoverflow.com/questions/ 2032335 /… etc ...) කෙසේ වෙතත්, මම එය අවසන් වරට ලබා දී සර්වස් ලෙස “යෙදුම” නිර්මාණය කිරීමට උත්සාහ කරමි ...
ටෙඩ්

4
යෙදුමකට සේවා සහ ක්‍රියාකාරකම් අඩංගු විය හැකි අතර, ඔබගේ යෙදුමට මේ දෙකම අවශ්‍ය විය හැකිය. ක්‍රියාකාරකම UI කොටස පමණි.
ආරොන්

23

බ්ලොග් Android යෙදුම් දී පිටවීමේ බොත්තම ඇතුළත් කිරීමට විට (ඉඟිය: එපා) , දුරට එය පැහැදිලි දුර වඩා හොඳ මම හැකි වඩා. සෑම ඇන්ඩ්‍රොයිඩ් සංවර්ධකයෙක්ම දැනටමත් එය කියවා ඇතැයි මම ප්‍රාර්ථනා කරමි.

උපුටා ගැනීම්:

මගේ අත්දැකීම් අනුව [පරිශීලකයින්ට] සැබවින්ම අවශ්‍ය වන්නේ: යෙදුමක් සම්පත් පරිභෝජනය කිරීම නවත්වන බවට සහතික කිරීමට පැහැදිලි ක්‍රමයක් (බැටරි, CPU චක්‍ර, දත්ත හුවමාරුව යනාදිය).

බොහෝ පරිශීලකයින් පිටවීමේ බොත්තමක් මෙම අවශ්‍යතාවය ක්‍රියාත්මක කරන බව වටහාගෙන එය එකතු කරන ලෙස ඉල්ලා සිටිති. සංවර්ධකයින්, ඔවුන්ගේ පරිශීලකයින් සතුටු කිරීමට බලා සිටින අතර, අනිවාර්යයෙන්ම එකක් එකතු කරන්න. ටික කලකට පසු ඔවුන් දෙදෙනාම අසමත් වේ.

  • බොහෝ අවස්ථාවලදී පිටවීමේ බොත්තම සරලව අමතයි Activity.finish(). මෙය හරියටම පසුපස බොත්තම එබීමට සමාන වේ. හරියටම. සේවාවන් දිගටම ක්‍රියාත්මක වන අතර ඡන්දය ප්‍රකාශ කිරීම දිගටම සිදුවේ. පරිශීලකයින් ඔවුන් යෙදුම මරා දමා ඇතැයි සිතිය හැකි නමුත් ඔවුන් එසේ කර නැති අතර ඉක්මනින් ඔවුන් තවත් කෝපයට පත් වනු ඇත.
  • පිටවීමේ හැසිරීම දැන් අපැහැදිලි ය. ඔබගේ පිටවීමේ බොත්තම ක්‍රියාකාරකම වසා දැමිය යුතුද, නැතහොත් එය සම්බන්ධිත සියලුම සේවාවන්, ලබන්නන් සහ අනතුරු ඇඟවීම්ද නතර කළ යුතුද? කළ Backයුත්තේ කුමක්ද? ඔවුන් Homeඒ වෙනුවට පහර දුන්නොත් කුමක් සිදුවේද ? ඔබගේ යෙදුමට විජට් එකක් තිබේ නම් කුමක් සිදුවේද? පිටවීමේ බොත්තම එය යාවත්කාලීන කිරීමෙන් නතර කළ යුතුද?

විසඳුම වන්නේ පිටවීමේ බොත්තම ඔබ බලාපොරොත්තු වන පරිදි පසුපස බොත්තම හැසිරවීමයි. වඩා හොඳ, යෙදුම නොපෙනෙන සෑම විටම සම්පත් පරිභෝජනය කිරීම නවත්වන්න.

ඉදිරියට ගොස් සම්පූර්ණ ලිපිය කියවන්න.


3
පිටවීම සහ පසුපසට සෑම විටම එකම අරමුණක් සඳහා භාවිතා නොවේ. උදාහරණයක් ලෙස පැන්ඩෝරා ගන්න. මෙම යෙදුමෙන් ඉවත් වීමට ඔබ නැවත පහර දුන් විට, එය යෙදුමෙන් පිටවන්නේ නැත (එය සේවාවක් ලෙස පසුබිමේ සෙල්ලම් කරයි).
ඉගෝර්ගනාපොල්ස්කි

G ඉගෝර්ග්. සංගීත වාදක යෙදුමකට සංගීතය වාදනය කිරීම නැවැත්වීමට "නවත්වන්න" බොත්තමක් අවශ්‍යය, යෙදුමෙන් පිටවීමට "පිටවීම" බොත්තමක් නොවේ.
ධිරාජ් වෙපකොම්මා

ඔබ කවදා හෝ පැන්ඩෝරා, iHeartRadio, Spotify, Jango සහ වෙනත් සංගීත ප්‍රවාහ යෙදුම් භාවිතා කර තිබේද? ඔවුන් සියල්ලන්ටම ඉවත්වීමේ බොත්තමක් තිබේ. සංගීත වාදනය නැවැත්වීම යෙදුමෙන් ඉවත් වීමක් නොවේ. විශේෂයෙන් ඔබට දැනුම් දීමේ තීරුවේ සේවාවක් තිබේ නම්.
ඉගෝර්ගනාපොල්ස්කි

2
මිථ්‍යාදෘෂ්ටික හෝ නැත, ප්‍රාථමික පරිශීලකයින් හෝ නැත, නමුත් මෙතෙක් ලියා ඇති සෑම UI මෘදුකාංගයක්ම පාහේ - ඕනෑම වේදිකාවක සහ මෙහෙයුම් පද්ධතියක - ඉවත්වීම / වසා දැමීම / පිටවීමේ බොත්තම ක්‍රියාත්මක කරයි. ඔබ එය ක්‍රියාත්මක කරන්නේ කෙසේද?
ඉගෝර්ගනාපොල්ස්කි

3
He DheerajV.S., යෙදුම නොපෙනෙන සෑම විටම සම්පත් පරිභෝජනය කිරීම නවත්වන්නද? නරක උපදෙස්. ඉතාම. ඉතා x99. මම ඡායාරූපයක් විද්‍යුත් තැපෑලෙන් යැවීමට උත්සාහ කරන සෑම අවස්ථාවකම මිනිත්තු 5 ක් යෙදුම දෘශ්‍යමානව තබා ගත යුතුය. මන්ද මම එය අවම කළහොත් එය ඡායාරූපයට විද්‍යුත් තැපැල් කිරීම නතර කරයි. නිවැරදි, යෙදුම් ක්‍රියාත්මක විය යුත්තේ දෘශ්‍යමාන වන විට පමණක් යැයි සමහර සංවර්ධකයින් සිතන නිසා මට විනාඩි 5 ක් මගේ දුරකථනය භාවිතා කළ නොහැක. දැන් සිතන්න වීඩියෝ වැනි විශාල ගොනුවක් යැවීම .....
පැසීරියර්

21

පිළිතුර: (රොමේන් ගයි): පරිශීලකයා එසේ නොකරයි, පද්ධතිය මෙය ස්වයංක්‍රීයව හසුරුවයි. ක්‍රියාකාරකම් ජීවන චක්‍රය (විශේෂයෙන් onPause / onStop / onDestroy) සඳහා වන්නේ එයයි. ඔබ කුමක් කළත්, "ඉවත්වීම" හෝ "පිටවීම" යෙදුම් බොත්තමක් නොතබන්න. ඇන්ඩ්‍රොයිඩ් යෙදුම් ආකෘතිය සමඟ එය නිෂ් less ල ය. මූලික යෙදුම් ක්‍රියාත්මක වන ආකාරය සඳහා ද මෙය පටහැනිය.

1: යෙදුමකින් සම්පූර්ණයෙන්ම ඉවත් වීම සාමාන්‍යයෙන් අනවශ්‍ය දෙයක් විය හැකි නමුත් එය නිෂ් .ල නොවේ. කවුළුවලට පිටවීමේ විකල්පයක් නොමැති නම් කුමක් කළ යුතුද? මතකය පිරී ඇති හෙයින් පද්ධතිය සුනඛ මන්දගාමී වනු ඇති අතර මෙහෙයුම් පද්ධතිය මඟින් ඔබ කුමන වැඩසටහන් සමඟ සිදු කර ඇත්දැයි අනුමාන කළ යුතුය. රොමේන් ගයි හෝ ලැරී පේජ් සහ සර්ජි බ්‍රින් කියන දේ මට ප්‍රශ්නයක් නැත - මේවා අවිවාදිත කරුණු ය: නව යෙදුමක් දියත් කිරීමට පෙර ඔවුන්ගේ මතකය ලබා ගැනීම සඳහා කාර්යයන් මරා දැමීමට සිදුවන විට පද්ධති මන්දගාමී වේ. යෙදුමක් විනාශ කිරීමට කාලය ගත නොවන බව ඔබට මට පැවසිය නොහැක! ඈත තාරකා වලින් පවා ආලෝකය කාලයක් ගත ... තියෙනවා වේ පූර්ණ සමීප යෙදුම් සඳහා පරිශීලක ඉඩ සමහර භාවිතය.

2: මූලික යෙදුම් ක්‍රියාත්මක වන ආකාරය වෙනස්ද? මොකක්ද එයින් අදහස් කලේ? මම දැනට යෙදුමක් ධාවනය කර අවසන් වූ විට, එය තවදුරටත් කිසිදු කාර්යයක් නොකරයි ... මෙහෙයුම් පද්ධතියේ මතකය අවශ්‍ය වූ විට එය මරා දැමීමට බලා සිටී.

සාරාංශයක් ලෙස, අවම කිරීම සහ පිටවීම අතර පැහැදිලි වෙනසක් ඇති අතර, අනෙක් ඒවාට හොඳ පහරක් එල්ල නොවේ. අපි සෑම ඉස්කුරුප්පු ඇණකම ඉස්කුරුප්පු නියනක් තබනවාද? නැත්නම් සෑම දොරකම යතුරක් තිබේද? බ්‍රේකරය පුපුරා යන තෙක් අපි අපගේ සියලු උපකරණ ඉහළ මට්ටමක තබා වෙනත් උපකරණයක් ක්‍රියාත්මක කළ යුතුද? අපි පිඟන් කෝප්පයෙන් පිඟන් කෝප්පයෙන් පිටව යනවාද? අළුත් අපිරිසිදු ඒවා සඳහා ඉඩක් වෙන් කර ගැනීමට සෑම අවස්ථාවකදීම ප්‍රමාණවත්ද? අපි සියලු මෝටර් රථ ධාවන පථයේ ධාවනය වන තුරු තබනවාද - අනේ කමක් නැහැ.

පරිශීලකයාට යෙදුමක් අවම කිරීමට අවශ්‍ය නම්, හොඳම දේ එය අවම කිරීමයි. පරිශීලකයෙකුට යෙදුමකින් පිටවීමට අවශ්‍ය නම්, සෑම අතින්ම පිටවීම වඩාත් සුදුසුය.

එය කේන්ති ගොස් තිබේද? එය ඇන්ඩ්‍රොයිඩ්ගේ දැක්මයි - ඔවුන් ඒ ගැන කෝප වේ. බොහෝ ස්වාධීන රූකි ඇන්ඩ්‍රොයිඩ් සංවර්ධකයින් ඒ ගැන කෝප විය.

නමුත් එය නිවැරදිව පහළට පැමිණි විට හොඳ කේතීකරණයක් සහ නරක කේතීකරණයක් ඇත. හොඳ වැඩසටහන් ප්‍රවාහ ආකෘති ඇති අතර නරක වැඩසටහන් ප්‍රවාහ ආකෘති ඇත.

පරිශීලකයා ඒවා සමඟ කර ඇති බව දැනගත් විට වැඩසටහන් මතකයේ තබා ගැනීම හොඳ වැඩසටහන් ප්‍රවාහයක් නොවේ. එය කිසිසේත්ම අරමුණක් ඉටු නොකරන අතර නව යෙදුම් දියත් කිරීමේදී හෝ යෙදුම් ධාවනය කිරීමේදී වැඩි මතකයක් වෙන් කරන විට එය මන්දගාමී වේ.

එය ඔබේ මෝටර් රථයට සමාන ය: ඔබ එය ධාවනය කර තබන විට, නැවතුම් ආලෝකයක නතර කිරීම හෝ සමහර විට ක්ෂණික ආහාර ධාවනය කිරීම හෝ ස්වයංක්‍රීය ටෙලර් යන්ත්‍රය නැවැත්වීම වැනි අවස්ථා තිබේ. නමුත් ඔබට එය වසා දැමීමට අවශ්‍ය වෙනත් අවස්ථා තිබේ - ඔබ රැකියාවට යන විට හෝ සිල්ලර වෙළඳසැලක හෝ නිවසක වැනි.

ඒ හා සමානව, ඔබ ක්‍රීඩාවක් කර දුරකථනය නාද කරන්නේ නම්, ඔව්. ක්රීඩාව විරාමයක් තබා එය දිගටම කරගෙන යන්න. නමුත් පරිශීලකයා ටික වේලාවක් ක්‍රීඩාව සමඟ සිදු කරන්නේ නම්, එවිට ඔවුන්ට පිටවීමට ඉඩ දෙන්න.

සමහර යෙදුම්වල පිටවීමේ බොත්තම අනෙක් ඒවාට වඩා ඉදිරියෙන් තිබිය යුතුය. උදාහරණයක් ලෙස ක්‍රීඩා, හෝ පරිශීලකයාට සම්පූර්ණයෙන්ම පිටවීමට අවශ්‍ය වැඩසටහන්, පැහැදිලි පිටවීමක් තිබිය යුතුය. වෙනත් වැඩසටහන්, සමහර විට, ඊමේල් වැඩසටහන් වැනි, පිටවීම බලාපොරොත්තු නොවූ ආශාවක් වන අතර (එමඟින් ඊමේල් සඳහා දිගින් දිගටම පරීක්ෂා කළ හැකිය) - මෙම වැඩසටහන් මඟින් පිටවීමේ විකල්පයක් සහිත ප්‍රාථමික පාලන ආදාන තිර අවකාශය නාස්ති නොකළ යුතුය, නමුත් හොඳ වැඩසටහන් ප්‍රවාහයක් සඳහා, පිටවීමේ විකල්පයක් තිබිය යුතුය. දුර්වල ආවරණ ප්‍රදේශයක සිටින විට හෝ ස්කයිප් ඇමතුමකින් හෝ වෙනත් ඕනෑම අවස්ථාවක ඔවුන්ගේ තැපැල් වැඩසටහන විද්‍යුත් තැපෑල පරීක්ෂා කිරීමට උත්සාහ කිරීම අවශ්‍ය නැති බව යමෙකු තීරණය කළහොත් කුමක් කළ යුතුද? ඔවුන්ට අවශ්‍ය නම් විද්‍යුත් තැපැල් වැඩසටහනෙන් ඉවත් වීමට ඔවුන්ට ඉඩ දෙන්න!

අත්හිටුවීම සහ පිටවීම වැදගත් කාර්යයන් දෙකක් වන අතර අනෙකාගේ කාර්යභාරය ඉටු නොකරයි.


2
"පරිශීලකයාට යෙදුමක් අවම කිරීමට අවශ්‍ය නම්, හොඳම දේ එය අවම කිරීමයි. පරිශීලකයෙකුට යෙදුමකින් පිටවීමට අවශ්‍ය නම්, සෑම ආකාරයකින්ම පිටවීම වඩාත් සුදුසුය." - යම් දෙයක් තිබේ (එම දශකයේ අත්දැකීම් මත පදනම්ව): පරිශීලකයින් දන්නේ කලාතුරකිනි, ඔවුන්ට අවශ්‍ය දේ. ඔබ ඔවුන්ට උදව් නොකරන්නේ නම්, ඔබට එය වෙනස් කිරීමට සිදුවනු ඇත. ඉහත සාම්පල ගැන: මම ඔබට වෙනත් සාම්පලයක් ලබා දෙන්නම්: ඔබ මෝටර් රථයක වැඩ කරන අතර දේවල් සඳහා මේසයක් අතේ තිබේ. කැබිනට් මණ්ඩලයට අවශ්‍ය සියලු මෙවලම් නිවැරදිව තැබීමට හෝ වැඩිපුරම භාවිතා කළ ඒවා අත ළඟ තබා ගැනීමට ඔබ සැමවිටම ඉවත්ව යනවාද? අළුත් ඒවා සඳහා ස්ථානයක් ලබා ගැනීම සඳහා ප්‍රමාද වී භාවිතා කළ එකක් ඉවත දමන්න?
හොගෝ

4
හෝගෝ, ඔබගේ අදහස් දැක්වීමට ස්තූතියි. ස්වාභාවිකවම, මම එකඟ නොවෙමි. නිශ්චිතවම, මට කිව හැකි පරිදි, ඔබේ මතය නම්, සමහර පරිශීලකයින් තමන් කළ යුත්තේ කුමක්දැයි නොදන්නා බැවින්, කළ යුතු දේ කිරීමට කිසිදු පරිශීලකයෙකුට ඉඩ නොදෙන්න, ඔවුන් කළ යුතු දේ දන්නා අය පවා නොවේ. ඇන්ඩ්‍රොයිඩ් යෙදුමක් අවම කිරීම වෙනුවට එය අවසන් කළ යුතුද යන්න නිවැරදිව දැන ගැනීමට ක්‍රමයක් තිබේ නම් හොඳයි. නමුත් එය එසේ නොවන අතර, පිටවීමට අවශ්‍ය වූ විට සෑම පරිශීලකයෙකුටම අවම වශයෙන් ජීවත් වීමට බල කිරීම උපාංගයේ දුර්වල ක්‍රියාකාරිත්වයට හේතු වේ.
ජෙසී ගෝර්ඩන්

කාරණය නම්, පද්ධතිය දන්නවා ඔබ එක් යෙදුමක් ආරම්භ කරන විට සහ මතකයක් නොමැති විට එය අන්තිම යෙදුම විනාශ කළ යුතු බව. පරිශීලකයා එය නොදැන සිටිය යුතුය. ඔබට එය අවශ්‍ය වන්නේ ඔබ පාලනය කර ගැනීම, එහි මෝඩ මාංශ පේශි මතකය, වැඩසටහන් පවා වසා දැමීමේ අර්ථ විරහිත පාලනය වැනි මිනිසෙකු වන බැවිනි. පරිගණක ස්වයංක්‍රීයව නිපදවීම සඳහා නිර්මාණය කරන ලද්දකි, වින්ඩෝස් ඇන්ඩ්‍රොයිඩ් මෙන් වැඩ කිරීමට මා කැමති අතර මා වෙනුවෙන් ස්වයංක්‍රීයව වසා දමන්න, නමුත් මට මතක තබා ගත යුතු කරුණක් වන්නේ ඉතිරි කර ඉවත්වීමයි, එය මෝඩකමකි, ඇයි මම, පරිශීලකයා එසේ කළ යුත්තේ? පරිගණක ඔවුන්ගේ මතකය කළමනාකරණය කළ යුතුය, මට කළමනාකරණය කිරීමට වෙනත් දේවල් තිබේ.
ලුයිස් ෆෙලිපේ

ඇත්ත වශයෙන්ම මම මගේ වින්ඩෝස් යන්ත්‍රයේ වැඩසටහන් වසා නොදමමි, මට 32GB RAM ප්‍රමාණයක් ඇත, මම සියල්ල ක්‍රියාත්මක කර තබමි, මගේ වැඩ අවසන් වූ පසු ඒවා වසා දමමි. වැඩසටහන වසා දැමිය යුත්තේ ඇයි, මිනිත්තු 5 කට පසුව එය නැවත විවෘත කිරීමට, මෙය තේරුමක් නැත. ප්‍රතිචාර දැක්වීමට මිනිත්තු 2 ක් ගතවන විශාල C ++ ව්‍යාපෘතියක් ගැන සිතන්න, මම දෘශ්‍ය චිත්‍රාගාරය සදහටම විවෘතව තබමි. විවෘතව දින 15 ක් ගතවන විට එය බිඳ වැටෙන්නේ නැති බව මම අපේක්ෂා කරමි (ඔව්, මම ඒ සඳහා ECC මතකය භාවිතා කරමි).
ලුයිස් ෆෙලිපේ

මැෂින් සාප්පුව සමඟ ඇති ප්‍රතිසමතාව හොඳ එකක් වන අතර, මම වැඩිපුරම භාවිතා කළ මෙවලම් මගේ මේසය මත තබමි, මම මෙවලම තෝරා ගන්නේ නැත, එය භාවිතා කරමි, සෑම අවස්ථාවකම එය නැවත තබමි. එසේම, මම දවස ආරම්භ නොකරමි, පරිගණකය සක්‍රිය කරන්න, එය ආරම්භ වන තෙක් බලා සිටින්න, IDE විවෘත කරන්න, ඕනෑම දෙයක්. නවීන පරිගණකය 40w ට අක්‍රිය විය හැකිය, වසා දැමිය යුත්තේ ඇයි? එය ද අඩු සංරචක පැළඳ සිටී (ආදාන ධාරාවක් නැත, ඊඊවරු එය දනිති :))
ලුයිස් ෆෙලිපේ

19

මම හිතන්නේ කාරණය වන්නේ ඔබ සතුව දෝෂ සහිත මෘදුකාංගයක් නොමැති නම් යෙදුමෙන් ඉවත් වීමේ අවශ්‍යතාවයක් නොමැති බවයි. පරිශීලකයා එය භාවිතා නොකරන විට ඇන්ඩ්‍රොයිඩ් යෙදුමෙන් ඉවත් වන අතර උපාංගයට වැඩි මතකයක් අවශ්‍ය වේ. ඔබට පසුබිමක් තුළ සේවාවක් ක්‍රියාත්මක කිරීමට අවශ්‍ය යෙදුමක් තිබේ නම්, ඔබට සේවාව අක්‍රිය කිරීමට ක්‍රමයක් අවශ්‍ය වනු ඇත.

උදාහරණයක් ලෙස, යෙදුම නොපෙනෙන විට ගූගල් සවන් දීම දිගටම පෝඩ්කාස්ට් වාදනය කරයි. නමුත් පරිශීලකයා එය සිදු කළ විට පෝඩ්කාස්ට් අක්‍රිය කිරීමට විරාම බොත්තම සෑම විටම පවතී. මට නිවැරදිව මතක නම්, සවන් දෙන්න, දැනුම් දීමේ තීරුවේ කෙටිමඟක් පවා තබන බැවින් ඔබට විරාම බොත්තම වෙත ඉක්මනින් යා හැකිය. තවත් උදාහරණයක් වන්නේ ට්විටර් යෙදුමක් වැනි යෙදුමක් වන අතර එය නිරන්තරයෙන් අන්තර්ජාලයේ සේවාවක් තෝරාගනී. මෙම වර්ගයේ යෙදුම් ඇත්ත වශයෙන්ම පරිශීලකයාට කොපමණ වාරයක් සේවාදායකය ඡන්දය ප්‍රකාශ කළ යුතුද යන්න හෝ පසුබිම් නූලකින් ඡන්දය ප්‍රකාශ කිරීම තෝරා ගැනීමට ඉඩ දිය යුතුය.

ඔබට පිටවීමේදී ක්‍රියාත්මක වන කේතයක් අවශ්‍ය නම්, ඔබට සුදුසු පරිදි onPause (), onStop () හෝ onDestroy () අභිබවා යා හැකිය. http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


5
මම සොයාගත් වෙනත් අවුල් සහගත දේවල් සමඟ, ඇන්ඩ්‍රොයිඩ් සඳහා අපගේ යෙදුම සංවර්ධනය කිරීම සිදු නොවනු ඇතැයි මම සිතමි. එහි ඕනෑවට වඩා "ලොකු අයියා" - සිදුවෙමින් පවතී, එහිදී ඇන්ඩ්‍රොයිඩ් මට පවසන්නේ කුමන යෙදුම ක්‍රියාත්මක විය යුතුද නැද්ද යන්නයි. ක්රමලේඛකයෙක්, එම තේරීම තිබිය යුතුය google නොවන හෝ ඇන්ඩ්රොයිඩ් = (ලෙස මම
ටෙඩ්

3
ඔබගේ ක්‍රියාකාරකම් - සක්‍රිය පරිශීලක අතුරුමුහුණත - වෙනත් යෙදුමක් ඉහළට පැමිණි විට ඉවතට යන්න, නැතහොත් ඔබ ආපසු හෝ වෙනත් දෙයක් ඔබන්න. පරිශීලකයා ඔවුන් සමඟ අන්තර් ක්‍රියා නොකිරීම නිසා පරිශීලකයා දිගු වේලාවක් ආපසු නොපැමිණියේ නම් තත්වය සුරැකීම ආරක්ෂිත වේ. Serviceදත්ත තල්ලු කිරීම හෝ වෙනත් ඕනෑම දෙයක් වැනි පසුබිම්වල අඛණ්ඩ වැඩ කටයුතු කරගෙන යාමට ඔබ ලිවීම වළක්වන කිසිවක් නැත . ඔබ වෙනත් යෙදුමක් භාවිතා කරන විට Google කතා කිරීම නතර නොවේ. සංගීත වාදකයාට සමානයි. එහි ඇති අනෙක් යෙදුම් සහ ඒවා ක්‍රියා කරන ආකාරය දෙස බලන්න.
ක්‍රිස්ටෝපර් ඕර්

3
ඔබට අක්තපත්‍ර සුරැකීමට හැකි විය යුතුය, එබැවින් පරිශීලකයින්ට දුරකථන ඇමතුමක් ලැබෙන සෑම අවස්ථාවකම ලොග් වීමට හෝ ඔබගේ යෙදුමෙන් ඉවතට යාමට අවශ්‍ය නොවේ. ඇන්ඩ්‍රොයිඩ් හි ජීවන චක්‍රය දෙස බැලීමට මම නිර්දේශ කරමි. යෙදුම විරාමයක් වූ විට, නැවැත්වූ විට හෝ විනාශ වූ විට, ඔබට අදාළ සියලු දත්ත සුරැකිය හැක, එවිට යෙදුම නැවත විවෘත වන විට, ඔවුන් එය අතහැර ගිය විට එය එසේ වනු ඇත. යෙදුම කවදා හෝ නතර කර ඇති බව පරිශීලකයා දැන ගැනීමට අවශ්‍ය නැත.
ජේ අස්ක්‍රන්

1
ඇත්ත වශයෙන්ම සම්පත් දැඩි යෙදුම් වලින් ඉවත් වීමට පරිශීලකයෙකුට අවශ්‍ය වනු ඇතැයි මට සිතිය හැකිය. සමහර විට එය
විරාමයක් ඇති

1
මෙම ප්‍රශ්න තවමත් ජීවමාන ය, මා එය ගෙනැවිත් වසර 4 කට පසුව =) මම එය සැබවින්ම පසුබිම් සේවාවක් ලෙස ක්‍රියාත්මක කළෙමි, නමුත් මම ඉවත්ව යන බොත්තම එක් කර ඇත්තෙමි, මට තවමත් දැනෙන බැවින් - අවුරුදු 4 කට පසුව - එය අවශ්‍යය සහ වැදගත්. ඒ වගේම වැඩි වැඩියෙන් යෙදුම් මා දකිනවා (උදාහරණයක් ලෙස ස්කයිප්).
ටෙඩ්

19

ඔබගේ දත්ත / සම්බන්ධතා (සහ එමඟින් ඔබේ "යෙදුම") නොනැසී පවතින්නේ කෙසේදැයි ඔබට තේරුම් ගැනීමට නොහැකි නම්, ඔබට ඇන්ඩ්‍රොයිඩ් සමඟ කළ යුතු දේ කිරීමට නොහැකි වනු ඇත.

කුඩා ඇප් lers ාතකයින් බාගත කරන අයට සාමාන්‍යයෙන් පෙනෙන්නේ ඔවුන් බැටරි ආයු කාලය හෝ මතක භාවිතය සඳහා උදව් නොකරන බවයි, නමුත් මෙහෙයුම් පද්ධතිය මතකය කාර්යක්ෂමව කළමනාකරණය කිරීමේ කාර්යයට බාධා කරයි ...

http://android-developers.blogspot.com/2010/04/multitasking-android-way.html


අපි කාර්ය lers ාතකයින් ගැන කතා කරමින් සිටියදී, දින කිහිපයකට පෙර ඇන්ඩ්‍රොයිඩ් රෙඩිට් හි ඉතා බුද්ධිමත් පෝස්ට් එකක් දර්ශනය විය. මෙහි සාරාංශය නම්, කාර්ය
lers ාතකයින්

E නීල් ට්‍රැෆ්ට්, මෙම පෝස්ට් එකේ අදහස් ඉතා බුද්ධිමත් බව මට පෙනී ගියේය. වෙළඳසැල්වල විකුණුම් නියෝජිතයින් තම ගනුදෙනුකරුවන් සඳහා කාර්ය
lers ාතකයින්

3
An ඩෑන්, ඇන්ඩ්‍රොයිඩ් මෙහෙයුම් පද්ධතිය එහි රැකියාවෙන් බාධා කරමින් සතියක් තිස්සේ මා විසින් කරන ලද යෙදුමකින් සම්පූර්ණයෙන්ම ඉවත් වීම දුරස්ථව කළ හැක්කේ කෙසේද? එබැවින් තවත් නිදහස් මතකයක් ඇත. එය ඇන්ඩ්‍රොයිඩ් වලට බාධාවක් විය නොහැක! එය පසුව දේවල් වේගවත් කළ හැකි බව සහතිකයි! මම යෙදුම සමඟ ටික කලක් අවසන් වී ඇති බව මා දන්නේ නම්, එය කිසිඳු අරමුණක් ඉටු නොකරයි. එය මතකය පමණක් ලබා ගන්නා අතර, ඉක්මනින් හෝ පසුව, මම නව යෙදුමක් දියත් කරමි, මෙහෙයුම් පද්ධතියට අමතර ප්‍රමාදයක් සිදුවනු ඇත, මන්ද සති කිහිපයකට පෙර මා විසින් කරන ලද යෙදුම් සමහරක් මා විසින් සිදු කළ බව මා දැන සිටි සමහර යෙදුම් විනාශ කිරීමට සිදුවනු ඇත.
ජෙසී ගෝර්ඩන්

Es ජෙසී ගෝර්ඩන්, ඔබ යෙදුමක් killed ාතනය කිරීමෙන් පසු සත්‍ය ක්‍රියාදාමයන් නරඹා තිබේද? ඒවා නැවත ආරම්භ වේ, මෙහෙයුම් පද්ධතිය උපකල්පනය කළේ ගැටලුවක් ඇති බවය ... මෙහෙයුම් පද්ධතිය මතකය අවශ්‍ය වූ විට යෙදුම් විනාශ කරයි. මෙහි සඳහන් ලිපිවල පළ කර ඇති කිසිවක් ඔබ කියවා තිබේද?
ඩෑන්

An ඩෑන්, ඇන්ඩ්‍රොයිඩ් මේ වගේ දෙයක් කරයි කියලා හිතන්න .... එයට ඇත්ත වශයෙන්ම සුදු රෙදි සෝදන නැවත අධ්‍යාපනය අවශ්‍යයි.
පැසීරියර්

18

ඇඩිසන්-වෙස්ලි විසින් ප්‍රකාශයට පත් කරන ලද "ඇන්ඩ්‍රොයිඩ් රැහැන් රහිත යෙදුම් සංවර්ධනය" කියවීම මම සලකා බලමි. මම එය අවසන් කර ඇති අතර එය ඉතා ගැඹුරු ය.

ඔබට ඇන්ඩ්‍රොයිඩ් වේදිකාවේ මූලික වැරදි වැටහීම් ඇති බව පෙනේ. ඇන්ඩ්‍රොයිඩ් යෙදුම්වල ජීවන චක්‍රය ගැන මාත් මුලින් ම කලකිරීමට පත් විය, නමුත් වැඩි අවබෝධයකින් පසුව, මම මෙම ප්‍රවේශය සැබවින්ම භුක්ති විඳීමට පැමිණ සිටිමි. මෙම පොත ඔබගේ සියලු ප්‍රශ්න වලට පිළිතුරු සපයනු ඇත. නව ඇන්ඩ්‍රොයිඩ් සංවර්ධකයින් සඳහා මා සොයාගත් හොඳම සම්පත එයයි.

එසේම, පවතින යෙදුමේ රේඛීය රේඛාවක් සඳහා ඔබට ඉඩ දිය යුතු යැයි මම සිතමි. ඔබගේ යෙදුම ඇන්ඩ්‍රොයිඩ් වේදිකාවට ගෙනයාමට, සමහර යෙදුම් සැලසුම වෙනස් වනු ඇත. ඩෙස්ක්ටොප් පද්ධති වලට සාපේක්ෂව ජංගම උපාංගවලට ඉතා සීමිත සම්පත් ඇති බැවින් ඇන්ඩ්‍රොයිඩ් උපාංගවලට පිළිවෙලින් හා සම්පත් දැනුවත්ව යෙදුම් කිහිපයක් ක්‍රියාත්මක කිරීමට ඉඩ සලසන බැවින් භාවිතා කරන යෙදුම්-ජීවන චක්‍රය අවශ්‍ය වේ. වේදිකාව පිළිබඳ තවත් ගැඹුරින් අධ්‍යයනය කරන්න, එවිට ඔබට කිරීමට අවශ්‍ය දේ මුළුමනින්ම කළ හැකි බව ඔබ තේරුම් ගනු ඇතැයි මම සිතමි. සුභ පැතුම්.

මාර්ගය වන විට, මම ඇඩිසන්-වෙස්ලි හෝ මෙම පොත හා සම්බන්ධ කිසිදු පුද්ගලයෙකු හෝ සංවිධානයක් සමඟ සම්බන්ධ වී නැත. මගේ පෝස්ට් නැවත කියවීමෙන් පසු මට දැනෙන්නේ මම ටිකක් රසික රසිකාවියන්ගෙන් ඉවත් වූ බවය. මම ඇත්තෙන්ම එය සැබවින්ම භුක්ති වින්දා. :)


2
පොත් ඉඟියට ස්තූතියි. මට හැකි නම් සහ ඇන්ඩ්‍රොයිඩ් වරායේ ගමන් කිරීමට මම තීරණය කළහොත් මම එය දෙස බලමි. එය නැවත ප්‍රකාශ කිරීම සඳහා ය: අපගේ පරිශීලකයින් පරිගණක සම්බන්ධයෙන් යාවත්කාලීන නොවේ. ඇන්ඩ්‍රොයිඩ් හි දැනුම්දීම් තීරුව භාවිතා කිරීමට ඔවුන්ට ඉතා අපහසු වනු ඇත. ඉතා කුඩායි (ඔවුන්ට විශාල ඇඟිලි ඇත). එය ඔවුන්ට වෙනස් ලෝකයකි, එබැවින් අපි එය සරලව තබා ගත යුතු අතර පරිශීලකයාට විකල්ප නොමැතිව. අපි අපගේ .NET විසඳුම මනසේ තබාගෙන - ඔවුන්ට තේරීමක් නොකරන්න =)
ටෙඩ්

මට ඒක ඇහෙනවා. බොහෝ පරිශීලකයින් ඉතා තාක්‍ෂණික බුද්ධිමත් නොවන බව ඔබ උපකල්පනය කළ යුතුය.
ඇන්ඩි

8
ජංගම උපාංගයක් සතුව ඇති “සම්පත්” කොතරම් කුඩාද යන මන්ත්‍රයෙන් මම වෙහෙසට පත් වෙමි. අවදි වන්න, ඔවුන් 500Mhz ඉක්මවා ධාවනය වන අතර මතකය විශාල ප්‍රමාණයක් ඇත. මගේ පැරණි ඩෙල් ඇක්සිම් සතුව 128MB RAM ප්‍රමාණයක් තිබුණි. දැනට පවතින උපාංගවල සාමාන්‍යයෙන් 512RAM ඉක්මවා 1GHZ මත ධාවනය වේ! එය මගේ පැරණි පෙන්ටියම් 90Mhz ට වඩා 10 ගුණයක් වැඩිය. මෙය සහ “සීමිත සම්පත්” යැයි පීපීඑල් පවසනවා මට ඇසුණේ නැත. කෝපි අවදි කර සුවඳ දැනීමට කාලයයි - අප දැන් සිටින්නේ 2010 දී මිස 80 දශකයේ නොවේ.
ටෙඩ්

16

ඇන්ඩ්‍රොයිඩ් යෙදුමක් තමන්ගේ ජීවන චක්‍රය භාර ගැනීමට 99% කට ආසන්න කාලයක් අවශ්‍ය නොවේ. බොහෝ විට එය යෙදුමේ වඩා හොඳ සැලසුම් කිරීම හෝ වඩා හොඳ සැලසුමකට පැමිණේ. උදාහරණයක් ලෙස, බාගැනීම් ආදිය හැසිරවීමට අභ්‍යන්තර සේවාවක් (අපනයනය නොකෙරේ) ගොඩනඟන්න, නැතහොත් පරිශීලක කාර්ය ප්‍රවාහය වටා ක්‍රියා සහ කාර්යයන් සැලසුම් කරන්න.

නමුත් එසේ පැවසුවහොත්, කැමැත්තක් ඇති තැන ක්‍රමයක් තිබේ. ඇන්ඩ්‍රොයිඩ් සපයයි - android.os.Process පන්තිය හරහා, යටින් පවතින ක්‍රියාවලිය පාලනය කිරීම සඳහා ජාවා වලට වඩා හොඳ API. ජාවා මෙන් නොව එය සරල java.lang.System.exit () ඇමතුමකට පිටුපස සැඟවීමෙන් සංවර්ධකයාට මෝඩයෙකු ලෙස සලකන්නේ නැත.

ඇන්ඩ්‍රොයිඩ් හි සියදිවි නසා ගැනීමට ඔබේ අයදුම්පත ඉල්ලන්නේ කෙසේද? හොඳයි, උපක්රමය සරලයි:

සම්මත android.app.Application පන්තියෙන් උරුම වීමෙන් ඔබේම ඇන්ඩ්‍රොයිඩ් යෙදුම් පන්තියක් සාදන්න (එය AndroidManifest.xml ගොනුවේ ප්‍රකාශ කිරීමට මතක තබා ගන්න).

OnCreate () ක්‍රමය අභිබවා ගොස් ඔබේ යෙදුම ආරම්භ කළ ක්‍රියාවලි හැඳුනුම්පත ගබඩා කරන්න:

this.pid = android.os.Process.myPid(); // Save for later use.

දැන් ඔබගේ යෙදුම kill ාතනය කිරීමට, kill ාතන () ක්‍රමයක් සපයන්න:

android.os.Process.sendSignal(pid, android.os.Process.SIGNAL_KILL);

දැන් ඔබට සිය දිවි නසා ගැනීමට ඔබේ යෙදුම අවශ්‍ය වූ විට යෙදුම් සන්දර්භය ටයිප් කර ඔබේ kill ාතන ක්‍රමය අමතන්න!

((MySuicidalApp) context.getApplicationContext()).kill()

විශේෂයෙන් සේවාවන් හා සම්බන්ධ ඇන්ඩ්‍රොයිඩ් හි ක්‍රියාවලි කළමනාකරණ ප්‍රතිපත්ති හේතුවෙන් ඇන්ඩ්‍රොයිඩ් ඔබේ සේවාව නැවත ආරම්භ කිරීමට තෝරා ගත හැකි බව මතක තබා ගන්න (බලන්න ඔබ ඇන්ඩ්‍රොයිඩ් හි කාර්ය lers ාතකයින් භාවිතා නොකළ යුතුය ).


ඔව්, මම මෙහි පැමිණියේ එක් අවස්ථාවකදී මගේ යෙදුම වසා දැමීමට අවශ්‍ය වූ නිසා පමණක් වන අතර, මගේ OBB දත්ත හැඹිලිය දූෂිත වන අතර මට සම්පූර්ණ යෙදුමම නැවත ආරම්භ කළ යුතුය
ලුයිස් ෆෙලිපේ

14

මම ඇන්ඩ්‍රොයිඩ් හි යෙදුමක් පිළිසිඳ ගත් විට, මම එය මේ ආකාරයෙන් දකිමි:

  • ඔබ ඔබේ යෙදුම සමඟ වැඩ කරයි
  • දුරකථනය වැදුණා
  • ඔබ ඇමතුම ගන්න
  • ඇමතුම අවසානයේ, ඔබ සිටි ස්ථානයට නැවත ඔබගේ අයදුම්පත වෙත පැමිණේ

එය සිදු කිරීම සඳහා, ඔබට අවශ්‍ය වන්නේ ඔබගේ දුරකථනයේ Backබොත්තම හෝ Homeබොත්තම (කෙටි හෝ දිගු එබීමෙන්) සහ දැනුම්දීම් තීරුව පමණි.

මම මගේ යෙදුමෙන් පිටවන විට, මම Backබොත්තම භාවිතා කරන්නේ මා එයින් ඉවත් වන තුරු හෝ Homeබොත්තම පමණි.

බොහෝ යෙදුම් පිළිසිඳ ගන්නේ එලෙසිනි. නමුත් මට යම් ආකාරයක සැසියක් හෝ සම්බන්ධතාවයක් අවශ්‍ය නම්, පිවිසුම් / ලොග්අවුට් බොත්තමක් සහ දැනුම්දීමක් (මාතෘකා තීරුව හෝ වෙනත් දෙයක්) සමඟ මම එය පරිශීලකයාට පැහැදිලි කළෙමි. මෙය පිරිසිදු "පිටවීමේ" විලාසිතාවේ යෙදුමට වඩා වෙනස් විලාසිතාවකි.

පළාත් සභා වල, ඔබට බහු-GUI ඩෙස්ක්ටොප් එකක් ඇති අතර, ඇන්ඩ්‍රොයිඩ් හි ඔබට පැහැදිලිවම බහු කාර්යයන් ඇත, නමුත් ඔබ වරකට එක් යෙදුමක් පමණක් ප්‍රදර්ශනය කරයි (මම මෙහි විජට් සලකා බලන්නේ නැත ^^). ජංගම දුරකථනයක, ඕනෑම වේලාවක, ඔබ කරන දෙයට වඩා වැදගත් දෙයක් සඳහා දැනුම් දීමක් කළ හැකිය.

එබැවින් යෙදුමක සමස්ත සංකල්පය "යෙදුම ඇතුලත් කරන්න - වැඩ - පිටවීමේ යෙදුම" වෙනස් දෙයක් මත රඳා පවතී.


12

හ්ම් ...

මම හිතන්නේ ඔබ ඇන්ඩ්‍රොයිඩ් යෙදුම නිවැරදි ආකාරයෙන් නොදකින බවයි. ඔබට පහසුවෙන් අවශ්‍ය දේට සමාන දෙයක් ඔබට කළ හැකිය:

  • සංවර්ධක සජීවී පාපැදි ප්‍රලේඛනය තුළ දිරිමත් කර ඇති ආකාරයට යෙදුම් ක්‍රියාකාරකම් තත්වය සුරැකීමට / ප්‍රතිස්ථාපනය කරන්න.

  • ප්‍රතිස්ථාපන අදියරේදී යම් පිවිසුමක් අවශ්‍ය නම් (පිවිසුම් / සැසි තොරතුරු නොමැත) ඉන්පසු එය කරන්න.

  • අවසානයේදී බොත්තමක් / මෙනුවක් / කල් ඉකුත් වීමක් එකතු කරන්න, එවිට ඔබ finish()පිවිසුම් සහ වෙනත් සැසි තොරතුරු සුරැකීමකින් තොරව සිදු කරනු ඇත , යෙදුම් සැසියේ අවසානය ව්‍යංගයෙන් කරයි: එබැවින් යෙදුම ආරම්භ කර / නැවත ඉදිරියට ගෙන එනු ලැබුවහොත් එය නව සැසියක් ආරම්භ කරනු ඇත.

යෙදුම සැබවින්ම මතකයෙන් ඉවත් කර තිබේද නැද්ද යන්න ඔබ සැබවින්ම ගණන් ගන්නේ නැත.

ඔබ ඇත්තටම මතකයෙන් එය ඉවත් කිරීමට අවශ්ය නම් (අධෛර්යය, සහ BTW දේ සඳහා?) ඔබ අවසානයේ කොන්දේසිය එය මරන්න පුළුවන් onDestroy()සමග java.lang.System.exit(0)(සමහර විට හෝ restartPackage(..)?). ඇත්ත වශයෙන්ම එය කරන්න ඔබට "යෙදුම සැබවින්ම අවසන් කිරීමට" අවශ්‍ය අවස්ථාවන්හිදී පමණි, මන්ද එය onDestroy()ක්‍රියාකාරකම් වල සාමාන්‍ය ජීවන චක්‍රයේ කොටසක් වන අතර යෙදුමක් කිසිසේත් අවසන් නොවේ.


11

ඇන්ඩ්‍රොයිඩ් සන්දර්භය තුළ යෙදුමක් යනු නොපැහැදිලි සම්බන්ධ ක්‍රියාකාරකම් සමූහයක් පමණක් බැවින්, යෙදුමෙන් ඉවත් වීම එතරම් අර්ථවත් නොවේ. ඔබට () ක්‍රියාකාරකමක් අවසන් කළ හැකි අතර, ක්‍රියාකාරකම් තොගයේ පෙර ක්‍රියාකාරකම් පිළිබඳ දර්ශනය ඇද ගනු ඇත.


2
යෙදුමක් අත්හැරීම සමහර අවස්ථාවල අර්ථවත් කරයි. එය ඔබ මසකට කිහිප වතාවක් මිනිත්තු කිහිපයක් භාවිතා කරන වැඩසටහනක් නම්, යෙදුම සම්පූර්ණයෙන්ම පිටවීමෙන් අවිවාදිත ප්‍රතිලාභයක් ඇත. එම වාසිය නම්, සතියකට පසුව එම යෙදුම එහි මතකයෙන් සහ ඔබගේ දුරකථනය නාද වූ විට ඔබ පිළිතුරු බොත්තම එබූ විට පිටවීමට කාලය ගත නොවීමයි. ඔබ ඇන්ඩ්‍රොයිඩ් මතකය නිදහස් කර ගන්නා තෙක් බලා සිටී. උදාහරණයක් ලෙස ඔබේ ඇමතුමට පිළිතුරු දිය හැකිය. නැතහොත් ඔබට ඊ-තැපෑලක් ලැබී ඇති අතර ඔබට එය කියවීමට අවශ්‍යය - මෙහෙයුම් පද්ධතිය මුලින් එය නිදහස් නොකළහොත් වැඩි මතකයක් අවශ්‍ය ඕනෑම යෙදුමක් ඉක්මනින් දියත් වේ.
ජෙසී ගෝර්ඩන්

3
කුමක්ද @JesseGordon කොට, සහ වර්ගයන් අර්ථයෙන් අත්හැරීම, ඇයි මේ හේතුව තවත් අංශයක්: මම නම් නෑ මම මාසය සඳහා නැවත භාවිතා කිරීමට යන්නේ නෑ කියලා මේ සම්පත්-දැඩි යෙදුම ඉවත් වන්න, මෙම මෙහෙයුම් පද්ධතිය සමහර විට වැරදි සහගත ලෙස සමහර මරනවා වෙනත් යෙදුම සම්පත් හිඟ වූ විට, මෙම නිෂ් less ල සම්පත් හොග් යෙදුම ක්‍රියාත්මක වන විට ... අනෙක් යෙදුම නැවත ආරම්භ කිරීමට වඩා වැඩි කාලයක් ගත වේ.
දොන් හැච්

10

මම ටෙඩ් සමඟ එකඟ වෙමි. යෙදුමෙන් පිටවීම "ඇන්ඩ්‍රොයිඩ් ක්‍රමය" නොවන බව මට වැටහී ඇත, නමුත් එය වළක්වා ගත යුතු බවක් නොපෙනේ. යෙදුමට සැබෑ පිටවීමක් ඔබට අවශ්‍ය වීමට හේතු තුනක් මෙන්න (ක්‍රියාකාරකම පමණක් නොවේ):

  1. අඩු මතකයේ දී කුමන යෙදුම මරණයට පත් වේද යන්න පිළිබඳව පරිශීලකයාට යම් පාලනයක් අවශ්‍ය විය හැකිය. වැදගත් යෙදුම A පසුබිමේ ක්‍රියාත්මක වන්නේ නම්, ඔබ එය අවසන් කළ විට B යෙදුමෙන් ඉවත් වීමට ඔබ කැමති විය හැක, එවිට යෙදුම A මඟින් මෙහෙයුම් පද්ධතිය විසින් විනාශ නොවනු ඇත.

  2. ඔබගේ යෙදුමේ සංවේදී දත්ත මතකයේ රඳවා තිබේ නම්, ඔබ වෛරස් / පණුවා / ව්‍යාජ යෙදුමකට එය ලබා ගත නොහැකි වන පරිදි යෙදුම විනාශ කිරීමට කැමති විය හැකිය. මම දන්නවා ආරක්ෂක ආකෘතිය එය වළක්වා ගත යුතු බව, නමුත් එසේ නම් ...

  3. ඔබගේ යෙදුම දුරකථනයට අහිතකර ලෙස බලපාන සම්පත් (ජාල, CPU, සංවේදක ආදිය) භාවිතා කරන්නේ නම්, එම සම්පත් නිදහස් බව සහතික කිරීමේ එක් ක්‍රමයක් වන්නේ යෙදුමෙන් පිටවීමයි. හොඳින් හැසිරෙන යෙදුම් අවශ්‍ය නොවන විට සම්පත් නිදහස් කළ යුතු බව මම තේරුම් ගතිමි. නමුත් නැවතත්, යෙදුමෙන් පිටවීම එය සහතික කිරීමේ සාධාරණ ක්‍රමයක් සේ පෙනේ.


6
"යෙදුම" නියෝජනය කරන්නේ කුමක් ද? මම ෆේස්බුක් යෙදුම විවෘත කර නව පැතිකඩක් පින්තූරයක් සකසන්නේ නම් - මගේ කැමරාව හෝ ගැලරි යෙදුම් ආරම්භ වේ. පරිශීලකයෙකු ලෙස, මම තවමත් එකම කාර්යය ඉටු කරමි (ෆේස්බුක් භාවිතා කරමින්). මම ෆේස්බුක් වැසීමට තීරණය කළහොත්, මගේ කැමරාව සහ ගැලරි යෙදුම් ද වසා දැමිය යුතුය (ඒවා ෆේස්බුක් වෙතින් දියත් කරන ලද ක්‍රියාකාරකම් බැවින්) ... මගේ වෙනත් පින්තූර කිහිපයක් සංස්කරණය කිරීමට මම මධ්‍යයේ සිට ෆේස්බුක් වසා දැමීමට අදහස් කර ඇත්නම් කුමක් කළ යුතුද? ? ඔබ ගැටලුව විභව දත්ත නැතිවීමකට මාරු කරනු ඇත.
සීන්හෝඩ්ස්

හොඳයි, එය දත්ත නැතිවීම තරම් දුරට යා හැකි යැයි මම නොසිතමි. ඔබගේ ක්‍රියාකාරකම මෙන් තුන්වන පාර්ශවීය ක්‍රියාකාරකමක් ඔබ සතුව තිබේ නම් සහ පිටවීමේ බොත්තම ඇති ඔබේම ක්‍රියාකාරකම නම්, පරිශීලකයාට පිටවීමේ බොත්තම finish()එබීමට පෙර තෙවන පාර්ශවීය ක්‍රියාකාරකම් කිරීමට සිදුවේ . තෙවන පාර්ශවීය ක්‍රියාකාරකම් එකල කිසියම් සුරකින ලද තොරතුරක් සුරැකිය යුතුය. යෙදුම් ස්විචරය වෙනම කාර්යයක් තුළ ක්‍රියාත්මක නොවන්නේ නම් පිටවීමේ බොත්තම් ක්‍රියාකාරකම් වෙත ආපසු යාමට ඔබට හැකි යැයි මම නොසිතමි. එය වෙනම කාර්යයක් නම්, එය වෙනම ක්‍රියාවලියක් වන අතර එම නිසා පිටවීමේ බොත්තම මඟින් එය විනාශ නොවේ.
නීල් ට්‍රැෆ්ට්

2
1. මම හිතන්නේ ඇන්ඩ්‍රොයිඩ් භාවිතා කරන්නන්ගෙන් 99.99% ක්ම තිර රෙදි පිටුපස මෙහෙයුම් පද්ධතිය කළමනාකරණය කරන්නේ කෙසේද යන්න ගැන කරදර නොවිය යුතුය. ඉතිරිය ගීක්කරුවන් වන අතර උසස් මෙවලම් මඟින් පද්ධතිය ඔවුන්ට අවශ්‍ය ආකාරයට හැසිරෙනු ඇත. 2. ක්‍රියාකාරකම් විරාමයක් හෝ නැවැත්වූ විට ඔබට සෑම විටම සංවේදී දත්ත මුදා හැරිය හැක. 3. ඉහත සඳහන් කළ ආකාරයටම, ජීවන චක්‍ර ඇමතුම් ක්‍රම මගින් සම්පත් නිදහස් කළ හැකිය. ක්‍රියාකාරකම නැවත ආරම්භ වූ විට, සම්පත් නැවත වෙන් කළ හැකිය.
Zsolt Trök

4
බොහෝ ඇන්ඩ්‍රොයිඩ් භාවිතා කරන්නන් "උසස් කාර්ය ler ාතකයා" ස්ථාපනය කිරීම තරමක් සිත්ගන්නා සුළු යැයි මම සිතමි, සාමාන්‍යයෙන් ඔබට එය තනිවම කළ නොහැකි බැවින් වෙනත් යෙදුම් වසා දමයි. මම එය සෑම විටම භාවිතා කරමි. යෙදුමකින් ඉවත් වීම ඔබට නොමැතිව කළ හැකි යැයි මට හැඟෙන දෙයක් නොවේ.
ටෙඩ්

2
S ZsoltTörök, මිනිසුන්ගෙන් 99.99% ක් මන්දගාමී පරිගණක / දුරකථන සමඟ ගනුදෙනු කරන අතර මෙහෙයුම් පද්ධතිය තිරය පිටුපස යෙදුම් කළමනාකරණය කරන්නේ කෙසේද යන්න ගැන කරදර වීමට බල නොකෙරේ.
පැසීරියර්

10

ලිනක්ස් කර්නලයට Out-of-memory ler ාතකය යනුවෙන් විශේෂාංගයක් ඇත (ඉහත සඳහන් කළ පරිදි, ප්‍රතිපත්ති පරිශීලක අවකාශයේ වින්‍යාසගත කළ හැකි අතර කර්නලය ප්‍රශස්ත එකක් නොවේ, නමුත් කිසිසේත් අනවශ්‍යය).

එය ඇන්ඩ්‍රොයිඩ් විසින් දැඩි ලෙස භාවිතා කරයි:

මෙම kill ාතන යෙදුම් සඳහා සහාය වීමට සමහර පරිශීලක අවකාශ යෙදුම් තිබේ, උදාහරණයක් ලෙස:


9

පෙනෙන විදිහට ඔබට අවශ්‍ය පිළිතුර අවසන් () විධානයෙන් සොයාගෙන ඇත. මෙය ඔබගේ යෙදුම මතකයෙන් ඉවත් නොකරනු ඇත, නමුත් සම්පත් අවශ්‍ය විටෙක ඇන්ඩ්‍රොයිඩ් එසේ කරනු ඇත, එබැවින් ඔබ එය පැහැදිලිවම නොකරන බවට කිසිදු වෙනසක් සිදු නොවේ.

යෙදුමෙන් පිටවීම සාමාන්‍යයෙන් ඇතිවිය හැකි පූර්ණ ප්‍රති achieve ල ලබා ගැනීම සඳහා පමණක් මම එය එකතු කරමි, උපාංගයේ ආරම්භයෙන් පසුව එය ක්‍රියාත්මක වන විට සාමාන්‍යයෙන් යෙදුමේ තත්වය සාමාන්‍යයෙන් පවතින තත්වයට නැවත සැකසීමට ඔබට අවශ්‍ය වනු ඇත. ඔබගේ සියලු ක්‍රියාකාරකම් පිළිබඳ නිමාව () ඇමතීමට. ඒ ආකාරයෙන්, පරිශීලකයා නැවත ඔබගේ යෙදුම තෝරා ගන්නේ නම්, එය "පිටවීම" ට පෙර සිට කිසිදු තත්වයක් ඉතිරි නොවී "නැවුම්" ලෙස ක්‍රියාත්මක වන බව පෙනේ.

පරිශීලකයාගේ වැඩ සුරැකීම හෝ වෙනත් දෙයක් වැනි "පිටවීමේදී" පමණක් සිදුවිය යුතු විශේෂ ක්‍රියා කිහිපයක් තිබේ නම්, ඉහත ක්‍රියා පටිපාටියේ නැවත ආරම්භ කිරීමට පෙර ඔබට ඒවා කළ හැකිය.

මෙම ප්‍රවේශය මඟින් මෙහෙයුම් පද්ධතිය අතැතිව යෙදුම් වසා දැමීම ඇතුළුව මෙහෙයුම් පද්ධති සම්පත් කළමනාකරණයෙන් ඉවත් වීමේ ඇන්ඩ්‍රොයිඩ් දර්ශනය උල්ලං without නය නොකර “පිටවීමේ” විධානයක් ලබා ගැනීමේ ඔබේ ඉලක්කය සපුරා ගැනීමට ඉඩ ලබා දේ.

පුද්ගලිකව, මම මෙම ප්‍රවේශය භාවිතා නොකරමි, මන්ද ඇන්ඩ්‍රොයිඩ් භාවිතා කරන්නන් එය නැවත බැලූ විට එහි අඛණ්ඩතාව ආරක්ෂා කර ගනු ඇතැයි අපේක්ෂා කරන අතර, එම නිසා ඔවුන් යෙදුමක් "පිටවීමේ" ක්‍රමයට පුරුදු වී නොමැත. ක්‍රියාවලිය තුළ "ඉවත්වීමේ" අවශ්‍යතාවයකින් තොරව, යෙදුම කිසියම් පෙරනිමි ආරම්භක තත්වයකට නැවත සැකසීමට පරිශීලකයාට ආයාචනා කළ හැකි "පැහැදිලි" ශ්‍රිතයකට මම ඒ වෙනුවට සහාය දෙමි.

එක් ව්‍යතිරේකය වනුයේ පරිශීලකයා පසුපස බොත්තම එබීමෙන් යෙදුම වැසීමට ප්‍රමාණවත් වාර ගණනක් ය. එවැනි තත්වයක් තුළ, තත්වය සුරකින බවට පරිශීලකයාගේ අපේක්ෂාවක් නොමැත (සහ යෙදුමේ සුරකින ලද තත්වයක් තිබේ නම්, සංවර්ධකයා වශයෙන්, එම සුරකින ලද දත්ත හඳුනාගන්නා පසුපස බොත්තම හැසිරවීමේ කේත තිබිය යුතුය, සහ එය SharedPreferences හෝ ගොනුවකට හෝ වෙනත් අස්ථාවර නොවන මාධ්‍යයකට සුරැකීමට පරිශීලකයාගෙන් විමසයි.

System.exit සම්බන්ධයෙන් (0):

ඔබේ යෙදුම අශෝභන ලෙස අවසන් කිරීමට system.exit (0) භාවිතා කිරීමට ඔබ තීරණය කරන්නේ නම් (උදා: අවසාන පසුපස බොත්තම එබීමේ ප්‍රති result ලයක් ලෙස), එවිට මම ඔබට අනතුරු අඟවන්නෙමි මෙය මට “ක්‍රියා කරයි” සහ සමහර විට යෙදුමක් ඉතිරිව ඇති බවට කිසිදු හෝඩුවාවක් නොමැතිව මට එය වසා දැමිය හැකි එකම ක්‍රමය වන්නේ, ඔබ මෙම ප්‍රවේශය භාවිතා කරන විට ජෙලි බීන් හි එක් සුළු දෝෂයක් ඇතිවීමයි.

ඔබගේ යෙදුම විවෘත කිරීම සඳහා ඔබ මෑත යෙදුම් ලැයිස්තුව භාවිතා කර, පසුව යෙදුම වසා දැමීමට පසුපස බොත්තම භාවිතා කරන්නේ නම් (system.exit (0) හරහා එය ක්‍රියාත්මක කර ඇති විට), මෑත යෙදුම් ලැයිස්තුව නැවත දෘශ්‍යමාන වනු ඇත. කවදාවත් වහලා නැහැ. එම ලැයිස්තුවේ ඇති ඔබගේ යෙදුමට දෙවන වරටත් එකම, දැනටමත් විවෘත කර ඇති මෑත යෙදුම් ලැයිස්තුවෙන් එය ක්‍රියාත්මක කිරීමට ඔබ තට්ටු කළහොත් ප්‍රතිචාරයක් නොලැබේ.

System.exit (0) භාවිතයෙන් ඔබ යෙදුම වසා දැමීම නිසා ක්‍රියාකාරී නොවන බවට පත්ව ඇති ඔබගේ යෙදුම පිළිබඳ සඳහනක් මෑත යෙදුම් ලැයිස්තුවෙහි රැඳී තිබීම ඊට හේතුව යැයි මම සැක කරමි. නිමාව () භාවිතා කරමින් ඔබේ යෙදුම වඩාත් ශිෂ්ට සම්පන්නව වසා දැමීමෙන් මෙහෙයුම් පද්ධතියට එහි මෑත යෙදුම් ලැයිස්තුව නැවුම් කිරීමට ඉඩ දිය හැකි ආකාරයකින් දැනුම් දෙනු ඇත, නමුත් system.exit (0) මෙය නොකරන බව පෙනේ.

මෙය සහ තමා තුළම විශාල ගැටළුවක් නොවේ, මන්ද ඉතා සුළු පිරිසක් මෑත කාලීන යෙදුම් වලින් යෙදුමක් විවෘත කර, ඉන් ඉවත් වී, පසුව එම විවෘත මෑත යෙදුම් ලැයිස්තුවෙන් වහාම එය නැවත විවෘත කරනු ඇත. ඔවුන් මුල් බොත්තම තට්ටු කර මෑත යෙදුම් ලැයිස්තුව නැවත විවෘත කළහොත් , ඔබගේ යෙදුමේ ප්‍රවේශය එහි ඇති අතර එය සම්පූර්ණයෙන්ම ක්‍රියාත්මක වනු ඇත. එහෙත් මම එය system.exit (0) භාවිතය ඔබගේ යෙදුම සහ මෙහෙයුම් පද්ධතිය අතර මනා සන්නිවේදන බාධා ඇති කළ හැක, මේ අනිත්, ඊටත් වඩා බරපතල, සමහරවිට, සියුම්, මෙම ප්රවේශය භාවිතා ප්රතිවිපාක ඇති විය හැකි බව හඟවන පෙන්නුම් කියලා මම හිතනවා.


() ඇමතීමට පෙර ඔබට මෑත කාලීන යෙදුම් ඇතුළත් කිරීම ඉවත් කළ හැකිද? මෙය කාලය ඉඩ දෙන විට මම උත්සාහ කරමි. මට කුඩා දියත් කිරීමේ ක්‍රියාකාරකමක් සහිත පෙරබිම් සේවාවක් ඇත. ක්‍රියාකාරකම ඉතා කුඩා බැවින් එය මරා දමා වළලනු නොලැබුවහොත් එය ලොකු දෙයක් නොවේ, නමුත් ඇන්ඩ්‍රොයිඩ්ට පැවසීම අර්ථවත් වන්නේ හැකි නම් මෙය සෙසු අයට පෙර රැගෙන යා හැකි බවයි.
nsandersen

9

කාලයත් සමඟ තත්වය වෙනස් වේ යැයි මම බලාපොරොත්තු වෙමි. මෙහෙයුම් පද්ධතිය විසින් යෙදුම් ක්‍රියාවලිය වැලිපිල්ලකින් නිවැරදිව භාවිතා කරන්නේ නම් පරිශීලකයාට යෙදුමක් හෝ ක්‍රියාවලියක් විනාශ කිරීමට හැකි විය යුතුය. යෙදුම් පරිපූර්ණ ලෙස ලිවිය යුතු යැයි මතයක් තිබේ, නැතහොත් පරිශීලකයා භාවිතා කරන්නේ සියලුම SDK නිර්දේශ අනුගමනය කරන යෙදුම් පමණි. මම හිතන්නේ එය උස නියෝගයක්.


මම දන්නවා. ඇපල් නිෂ්පාදන සමහර පාරිභෝගිකයින්ට හොඳයි. ඒවා සංවර්ධකයින්ට හොඳ නැත. ඇන්ඩ්‍රොයිඩ් මෙහෙයුම් පද්ධතියට ජංගම දුරකථන සඳහා “පරිගණක ලෝකයේ වින්ඩෝස් මෙහෙයුම් පද්ධතිය” මෙන් වීමට පූර්ණ හැකියාවක් ඇත. ඊටත් වඩා හොඳ විය හැකිය. කාර්ය කළමනාකරුවෙකු ලිවීමට අපට ඉඩ නොදීම හැර, එය දැනටමත් පළාත් සභා ලෝකයේ කවුළුවලට වඩා විවෘත ය.
ඩිපු

7

(සාපේක්ෂව) සරල මෝස්තරයක් ඇති අතර එමඟින් ඔබට “පිටවීමේ” සංසිද්ධිය වටා යාමට ඉඩ සලසයි. ඔබගේ යෙදුමට හිස් තිරයක් වන "පාදක" තත්වයක් (ක්‍රියාකාරකමක්) ඇති කරන්න. පළමු ක්‍රියාකාරකම නිර්මාණය කිරීමේදී, ඔබගේ යෙදුමේ ප්‍රධාන ක්‍රියාකාරිත්වය පවතින තවත් ක්‍රියාකාරකමක් ඔබට දියත් කළ හැකිය. එවිට "පිටවීම" සම්පූර්ණ කළ හැක්කේ () මෙම දෙවන ක්‍රියාකාරකම අවසන් කර හිස් තිරයක පාදයට යාමෙනි. මෙහෙයුම් පද්ධතියට මෙම හිස් තිරය අවශ්‍ය තාක් කල් මතකයේ තබා ගත හැකිය ...

සාරාංශයක් ලෙස, ඔබට මෙහෙයුම් පද්ධතියට පිටවිය නොහැකි නිසා, ඔබ හුදෙක් ස්වයං-සාදන ලද කිසිවක් නැති දෙයක් බවට පරිවර්තනය වේ.


2
හොඳ අදහස. කෙසේ වෙතත්, ක්‍රියාකාරකමක් (හෝ සේවාවක්) අවසන් කිරීමෙන් පවා මෙහෙයුම් පද්ධතිය නතර නොවේ. ඔහ්, නැත, onDestroy ක්‍රියාත්මක කිරීමෙන් පසුව පවා සියලු විචල්‍යයන් සහ දේවල් තවමත් පවතී. OnDestroy ලෙස හැඳින්වුවද, සේවාවකදී සෑම දෙයක්ම එක හා සමාන බව මම දුටුවෙමි ...
Ted

2
... මේ අනුව System.exit (0) උදව් විය =)
ටෙඩ්

7

යෙදුම් සංවර්ධකයාට තමන්ගේම යෙදුම kill ාතනය කිරීම සඳහා පිටවීමේ කාර්යයක් නොමැතිව එය ඉතා නරක සැලසුමකි.

ධාවන වේලාවේදී ගතිකව දත්ත ගතිකව වෙනස් කිරීමට මගේ යෙදුමට පරිශීලකයාට ඉඩ දිය යුතු අතර වෙනස් කිරීමේ බලපෑමක් ඇති කිරීම සඳහා පරිශීලකයාට මගේ යෙදුම නැවත ආරම්භ කළ යුතුය, නමුත් ඇන්ඩ්‍රොයිඩ් මගේ යෙදුම නැවත ආරම්භ කිරීමට ඉඩ දුන්නේ නැත. ඇන්ඩ්‍රොයිඩ් මෙහෙයුම් පද්ධතියට ඉතා නරක නිර්මාණ යෙදුම් ජීවන චක්‍රයක් ඇත.


9
public void appRestart () ent Intent i = new Intent (getBaseContext (), MyActivity.class); i.addFlags (අභිප්‍රාය. FLAG_ACTIVITY_CLEAR_TOP); ආරම්භක ක්‍රියාකාරිත්වය (i); }
androidworkz

2
මෙම ඉහත අදහස් දැක්වීමේ කේතය සැබවින්ම හොඳින් ක්‍රියාත්මක වේ. අවම වශයෙන් ඔබට යෙදුමෙන් සම්පූර්ණ පිටවීම වෙනුවට පළමු ක්‍රියාකාරකම වෙත යා හැකිය. :)
හර්ප්‍රීත්

7

ඕනෑම අවස්ථාවක යෙදුමක් වැසීම සඳහා FLAG_ACTIVITY_CLEAR_TOPඅභිප්‍රාය තුළ ධජය භාවිතා කරන්නsystem.exit();

හෝ ඒ හා සමාන ක්‍රමයක් ඇත, නමුත් system.exit()ඔබට පිටවීමට අවශ්‍ය වූ විට නොමැතිව මෙම ක්‍රමය අමතන්න:

public void exit() {
    startActivity(new Intent(this, HomeActivity.class).
    setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK).putExtra(EXIT_FLAG, true));
}

ඔබගේ HomeActivity.onCreate()පහත දැක්වෙන කේතය එක් කරන්න

protected void onCreate(Bundle savedInstanceState) {
    if (getIntent().getBooleanExtra(EXIT_FLAG, false)) {
        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
            finish();
        }
    }
......................

ඇන්ඩ්‍රොයිඩ් ජීවන චක්‍රය බිඳ දැමීමෙන් තොරව මෙය ක්‍රියාත්මක වේ.


7

පළමුවෙන්ම, කිසි විටෙකත් System.exit (0) භාවිතා නොකරන්න. එය හරියට පුද්ගලයෙකුගේ හිසට පහරක් එල්ල කිරීම වැනි ය!

දෙවනුව: මම මෙම ගැටලුවට මුහුණ දෙමි. මගේ විසඳුම බෙදා ගැනීමට පෙර මගේ අදහස් බෙදා ගැනීමට මට අවශ්‍යය.

මම හිතන්නේ "පිටවීමේ බොත්තමක්" මෝඩයි. ඇත්තටම ඇත්තටම මෝඩයි. ඔබේ යෙදුම සඳහා පිටවීමේ බොත්තමක් ඉල්ලා සිටින පරිශීලකයින් (පාරිභෝගිකයා) ද මෝඩ යැයි මම සිතමි. මෙහෙයුම් පද්ධතිය ක්‍රියාත්මක වන්නේ කෙසේද සහ සම්පත් කළමනාකරණය කරන්නේ කෙසේද යන්න ඔවුන්ට තේරෙන්නේ නැත (එය විශාල කාර්යයක් කරයි).

මම හිතන්නේ ඔබ නියම මොහොතේ (කොන්දේසි) නිවැරදි දේ (යාවත්කාලීන කිරීම්, සුරැකීම් සහ තල්ලු කිරීම්) කරන නිවැරදි කේතයක් ලිවුවහොත් සහ නිවැරදි දේ (සේවා සහ ලබන්නා) භාවිතා කරන්නේ නම් එය ඉතා හොඳින් ක්‍රියාත්මක වන අතර කිසිවෙකු පැමිණිලි නොකරනු ඇත .

නමුත් එය සිදු කිරීම සඳහා ඔබ ඇන්ඩ්‍රොයිඩ් හි ක්‍රියා කරන ආකාරය අධ්‍යයනය කර ඉගෙන ගත යුතුය. කෙසේ වෙතත්, පරිශීලකයින්ට "පිටවීමේ බොත්තමක්" ලබා දීම සඳහා මෙය මගේ විසඳුමයි.

සෑම ක්‍රියාකාරකමකම සෑම විටම දැකිය හැකි විකල්ප මෙනුවක් මම නිර්මාණය කළෙමි (මම එය කරන සුපිරි ක්‍රියාකාරකමක් ඇත).

පරිශීලකයා එම බොත්තම මත ක්ලික් කළ විට සිදු වන්නේ මෙයයි:

Intent intent = new Intent(this, DashBoardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

SharedPreferences settings = getSharedPreferences(getString(PREF_ID), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(FORCE_EXIT_APPLICATION, true);

  // Commit the edits!
editor.commit();
startActivity(intent);
finish();

ඒ නිසා මම මගේ යෙදුම විනාශ කිරීමට අවශ්‍ය බව SharedPreferences හි ඉතිරි කරමි, මම අභිප්‍රායක් ආරම්භ කරමි. කරුණාකර එම ධජ දෙස බලන්න; ඒවා මගේ "ගෙදර" ක්‍රියාකාරකම වන මගේ ඩෑෂ්බෝඩ් ක්‍රියාකාරකම ලෙස හඳුන්වන මගේ පසුපස කොටස ඉවත් කරනු ඇත.

එබැවින් මගේ උපකරණ පුවරුවේ ක්‍රියාකාරකම් වලදී මම මෙම ක්‍රමය ක්‍රියාත්මක කරන්නේ onResume:

private void checkIfForceKill() {

    // CHECK IF I NEED TO KILL THE APP

    // Restore preferences
    SharedPreferences settings = getSharedPreferences(
            getString(MXMSettingHolder.PREF_ID), Context.MODE_PRIVATE);
    boolean forceKill = settings.getBoolean(
            MusicSinglePaneActivity.FORCE_EXIT_APPLICATION, false);

    if (forceKill) {

        //CLEAR THE FORCE_EXIT SETTINGS
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean(FORCE_EXIT_APPLICATION, false);

        // Commit the edits!
        editor.commit();

        //HERE STOP ALL YOUR SERVICES
        finish();
    }
}

එය ඉතා හොඳින් ක්‍රියාත්මක වනු ඇත.

එය සිදුවන්නේ ඇයිදැයි මට නොතේරෙන එකම දෙය නම්, මම අවසාන නිමාව කරන විට (සහ මම පරීක්ෂා කර බැලුවෙමි: එය onPause → onStop → onDestroy හි නිවැරදි ප්‍රවාහය අනුගමනය කරයි) යෙදුම තවමත් මෑත කාලීන ක්‍රියාකාරකම් වල පවතී (නමුත් එය හිස්).

නවතම අභිප්‍රාය (උපකරණ පුවරුව ක්‍රියාකාරිත්වය ආරම්භ කර ඇති) තවමත් පද්ධතිය තුළ ඇති බව පෙනේ.

එය ඉවත් කිරීම සඳහා මට තවත් කැණීම් කළ යුතුය.


8
බොහෝ පාරිභෝගිකයින් නොදන්නේ මෙහෙයුම් පද්ධතියක් යනු එක් අයෙකු ක්‍රියා කරන ආකාරය පමණක් නොව මෙය මෝඩකමක් නොවන බවයි. පිටවීම / ඉවත්වීම / අක්‍රිය කිරීම බොත්තමක් අවශ්‍ය වීම ඒවා සාමාන්‍ය තත්වයට පත් කරයි. ඔබ කාමරයකින් පිටවන විට විදුලි පහන් නිවා දමන්න, වඩා වැදගත් වන්නේ ඔබ නිවසින් පිටවන විට ඔබ දොර අගුළු දමා ඇති අතර වැඩසටහනකින් නිසි ලෙස පිටවීමට නොහැකි වීමේ ගැටලුව මා දකින්නේ මෙහිදීය. වැඩසටහන පසුබිම තුළ ජීවත්වීම විශාල ආරක්ෂක අවදානමකි.
ස්කොගිල්ස්

4
"මම හිතන්නේ" පිටවීමේ බොත්තමක් "මෝඩයි". බොහෝ මෘදුකාංග යෙදුම් පිටවීමේ බොත්තමක් සපයයි.
ඉගෝර්ගනාපොල්ස්කි

ඔබ "// මෙතැනින් ඔබේ සේවාවන් නවත්වන්න" යැයි පවසා නිමාව () භාවිතා කළේය. ඇන්ඩ්‍රොයිඩ් සේවාවන්ට නිම කිරීමේ () ක්‍රමයක් නොමැත. ඔවුන්ට නොබැඳි සේවා (mConnection) ඇත;
ඉගෝර්ගනාපොල්ස්කි

Qu ස්කිගල්ස් ඔබට කාමරයක් තිබේ නම් එහි සියලු විදුලි පහන් ස්වයංක්‍රීයව නිවා දමා ඔබ පිටවන විට ඔබේ දොර අගුළු දමා තිබේ නම්, ඔබ ඒ ගැන සැලකිලිමත් විය යුතු නැත.
ශේෂු විනයා

7

ඇන්ඩ්‍රොයිඩ් යෙදුම් ජීවන චක්‍රය නිර්මාණය කර ඇත්තේ පරිගණක භාවිතා කරන්නන් සඳහා නොව ජංගම දුරකථන භාවිතා කරන්නන් සඳහා ය.

යෙදුම් ජීවන චක්‍රය යනු ලිනක්ස් සේවාදායකයක් පාරිභෝගික උපකරණයක් බවට පත් කිරීම සඳහා අවශ්‍ය වන කුරිරු සරල ආදර්ශයයි.

ඇන්ඩ්‍රොයිඩ් යනු ජාවා හරහා ලිනක්ස්, සැබෑ හරස් වේදිකා සේවාදායක මෙහෙයුම් පද්ධතියකි. එය එතරම් ඉක්මණින් පැතිරෙන්නේ එලෙසිනි. යෙදුමේ ජීවන චක්‍රය මෙහෙයුම් පද්ධතියේ යටි යථාර්ථය ආවරණය කරයි.

ජංගම පරිශීලකයින් සඳහා, යෙදුම් දැන් ස්ථාපනය කර හෝ ස්ථාපනය කර නොමැත. ධාවනය හෝ පිටවීම පිළිබඳ සංකල්පයක් නොමැත. ඇත්ත වශයෙන්ම, යෙදුම් ක්‍රියාවලීන් මෙහෙයුම් පද්ධතිය විසින් ඔවුන් සතුව ඇති සම්පත් සඳහා මුදා හරින තෙක් ක්‍රියාත්මක කිරීමට අදහස් කෙරේ.

මෙය Stack Overflow වන බැවින්, මෙය කියවන ඕනෑම අයෙකු පරිගණක භාවිතා කරන්නෙකු වන අතර ජංගම යෙදුම් ජීවන චක්‍රය අවබෝධ කර ගැනීම සඳහා ඔවුන්ගේ දැනුමෙන් 90% ක් අක්‍රිය කළ යුතුය.


"පරිගණක භාවිතා කරන්නන් ඔවුන්ගේ දැනුමෙන් 90% ක් අක්‍රිය කළ යුතුය" යන ඔබේ පිම්ම මම අනුගමනය නොකරමි. ඔව්, රොමේන් ගයි පවසන්නේ එයයි, නමුත් එය සත්‍යයක් නොවේ. සෑම කෙනෙකුගේම අවශ්‍යතා සපුරාලන "ඉවත්ව යන්න" බොත්තමක් සහිත "පරිගණක භාවිතා කරන්නන් සඳහා උසස් විකල්ප" කොටස මට පෙනේ.
දොන් හැච්

මෙම "රොමේන් ගයි" කවුද, නැතහොත් ඔහු මා උපුටා දක්වන්නේ ඇයිදැයි මා දන්නේ නැත. යෙදුම් තොරතුරු නැවැත්වීම මෙන්ම මෑත කාලීන කාර්යයන් වැසීම යෙදුමෙන් ඉවත් වේ. උසස් පරිශීලකයින් සඳහා ෂෙල් ප්‍රවේශයට ADB ඉඩ දෙයි.
ඩොමිනික් සෙරිසානෝ

6

අර්ධ නිසි ඇන්ඩ්‍රොයිඩ් යෙදුම් ජීවන චක්‍රයක් සැබවින්ම ක්‍රියාත්මක කිරීමට වඩා මෙම ප්‍රශ්නාවලිය කියවීමට මට වැඩි කාලයක් ගත විය.

එය ජීපීඑස් යෙදුමක් වන අතර එය තත්පරයට තත්පර කිහිපයකට වරක් නූල් භාවිතා කරමින් වෙබ් සේවා වෙත යවනු ලැබේ ... මෙය ටෙඩ්ගේ නඩුවේ සෑම මිනිත්තු 5 කට වරක් යාවත්කාලීන කිරීමක් සඳහා ඡන්දය ප්‍රකාශ කළ හැකිය, එවිට ඔන්ස්ටොප් හට යාවත්කාලීන ක්‍රියාකාරකම් ආරම්භ කළ හැකිය ටෙඩ් සූ එකක් හමු වූවා නම් ඒ ගැන සැලකිලිමත් වන්න (අසමමුහුර්ත ටෙඩ්, වින්ඩෝස් ක්‍රමලේඛකයෙකු මෙන් කේත නොකරන්න, නැතහොත් ඔබේ වැඩසටහන් වින්ඩෝස් වැඩසටහන් මෙන් ක්‍රියාත්මක වේ ... ඊව්, එය එතරම් අපහසු නොවේ).

මම ඇතුළු ක්රියාකාරකම් ජීවිත කාලය සඳහා දේවල් පිහිටුවීමට onCreate සමහර මූලික කේතය කළේ checkUpdate.start();:

...

@Override
public void onStart() {
    super.onStart();
    isRemote = true;
    checkUpdate.resume();

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 0, luh);
}

@Override
public void onPause() {
    isRemote = false;
    checkUpdate.suspend();
    locationManager.removeUpdates(luh);
    super.onStop();
}

මෙම කේතය සම්පූර්ණයෙන්ම වැරදියි, නමුත් එය ක්‍රියාත්මක වේ. මෙය මගේ පළමු ඇන්ඩ්‍රොයිඩ් යෙදුම් වලින් එකකි.

Voilà, පසුබිමක සිටින විට CPU පරිභෝජනය නොකරන යෙදුමක් වන නමුත් එය RAM හි ඇති බැවින් ක්ෂණිකව නැවත විවෘත කිරීමට සූදානම්ය (ඇන්ඩ්‍රොයිඩ් ජීවන චක්‍රය මෙන් RAM රඳවා නොගත්තද) ... යෙදුමක් සැමවිටම සූදානම්, එය දුරකථනයකි , යාලුවනේ / ගැල්ස්. යෙදුමක් සියළුම RAM භාවිතා කර මෙහෙයුම් පද්ධතිය විසින් වසා දැමිය නොහැකි නම් එය නාද වීම නතර කළ හැකිය = P ඒ නිසා ඔබගේ යෙදුම පසුබිමේ ඇති විට එය වසා දැමීමට මෙහෙයුම් පද්ධතියට අවශ්‍ය විය යුතුය (ඔබගේ යෙදුම නොමැති නම් සම්පත් හොග් එකක් නොවේ එය BTW වසා දමන්නේ නැත), එබැවින් වඩා හොඳ යෙදුම් ලියමු.


ඔබ onPause ක්‍රමයෙන් super.onStop අමතන්න එපා .. මෙය ප්‍රධාන වශයෙන් දේවල් ඉස්කුරුප්පු කරන බවක් පෙනේ.
මැට් වුල්ෆ්

1
දාර්ශනික පිළිතුරු 20 ක් හෝ ඊට වැඩි ගණනක් කියවීමෙන් පසු ප්‍රශ්නය හුදෙක්ම යොමු කරයි .... +1 යම් කේතයක් තිබීම සඳහා.
පැසීරියර්

6

ඔබ අභිප්‍රායයෙන් ඊළඟ පිටුවට යන සෑම අවස්ථාවකම, භාවිතා කරන්න:

`YourActivityname.this.finish()`;

උදාහරණයක්:

Intent intent = new Intent(getApplicationContext(), SMS.class);

startActivity(intent);
MainActivity.this.finish();

එබැවින් කිසිදු ක්‍රියාකාරකමක් පසුබිමේ ක්‍රියාත්මක නොවන අතර ඔබට ඔබගේ යෙදුමෙන් පිටවීමට අවශ්‍ය වූ විට , භාවිතා කරන්න:

MainActivity.this.finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
getParent().finish();

මෙම පිටවීම මට ආශ්වාදයක් මෙන් විය :)


1
එය යෙදුමෙන් පිටවන්නේ නැත, එය ප්‍රධාන ක්‍රියාකාරිත්වයට පැමිණේ.
ෂරත්

1
නමුත් ප්‍රවේශම් වන්න - onPause () killProcess සහ System.exit සම්බන්ධයෙන් කැඳවනු නොලැබේ. ඒ සමඟ අපට යම් යම් ගැටලු ඇති විය.
පවෙල් බිරියුකොව්

4

ඕනෑම අවස්ථාවක, ඔබේ අයදුම්පත අවසන් කිරීමට ඔබට අවශ්‍ය නම් ඔබට සැමවිටම ඇමතිය හැකිය System.exit(0);.


5
System.exit()ඔබට එකකට වඩා ක්‍රියාකාරකම් තිබේ නම් ඔබගේ යෙදුම විනාශ නොකරයි. එය භාවිතා කරන ඇන්ඩ්‍රොයිඩ් සංවර්ධකයෙකු මූලික ඇන්ඩ්‍රොයිඩ් යෙදුමේ ජීවන චක්‍රය තේරුම් ගෙන නොමැත. මෙම පිළිතුර කියවන්න .
ධිරාජ් වෙපකොම්මා

සමග පූර්ණ විසඳුමක් System.exit(0); stackoverflow.com/questions/2033914/...
Sohail Zahid

2
ඇත්තටම, System.exit () කරන්නේ ඔබේ ඇප් මරා දමනවා. කෙසේ වෙතත්, System.exit () ප්‍රධාන ක්‍රියාකාරකම හැර වෙනත් තැනකින් කැඳවනු ලැබුවේ නම්, ඇන්ඩ්‍රොයිඩ් විසින් යෙදුම නැවත ආරම්භ කරන්නේ එක අඩු ක්‍රියාකාරකමක් සමඟිනි. මට එය පිරිසිදු චේතනාන්විත System.exit සඳහා හාස්‍යජනක ප්‍රතිචාරයක් සේ පෙනේ. මම කිව්වේ, එය div0 හෝ නොදැනුවත්ව බිඳවැටීමක් නම්, සමහර විට එය නැවත ආරම්භ කිරීම ආචාරශීලී වනු ඇත. නමුත් ඒවා මට මතක පරිදි ස්වයංක්‍රීයව නැවත දියත් කිරීමට පවා හේතු නොවේ. එහෙත්, ඕනෑම අවස්ථාවක, එම යෙදුම වේ ඝාතනය කළා. එය නැවත ආරම්භ කළ හැකි නමුත් එයින් අදහස් නොකෙරේ එය was ාතනය නොකළ බව.
ජෙසී ගෝර්ඩන්

3

ඔබට 10,20 ක් තිබේ නම් .. බහු ක්‍රියාකාරකම් ක්‍රියාත්මක වන අතර ඔබට ඒවා සියල්ල අවසන් කර පද්ධතියෙන් ඉවත් වීමට අවශ්‍යය.

application classහෝ තුළ ස්ථිතික අරාවක් සාදන්නconstants class.

නියතයන්

public class Constants {

public static ArrayList<Activity> activities = new ArrayList<Activity>();

}

ප්‍රධාන ක්‍රියාකාරිත්වය මෙම අරාව තුළ වත්මන් ක්‍රියාකාරකම් යොමුව එක් කරන්න

activity = MainActivity.this; Constants.activities.add(activity);

public class MainActivity extends Activity {

    private ImageView imageButton;
    private Activity activity;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        activity = MainActivity.this;
        Constants.activities.add(activity);

        imageButton = (ImageView) findViewById(R.id.camera);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // existing app.
                if (Constants.activities != null) {
                    for (int i = 0; i < Constants.activities.size(); i++) {
                        Activity s = Constants.activities.get(i);
                        s.finish();
                    }
                }
                //super.finish();
                finish();
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);
            }
        });
    }
}

1
පරිශීලකයින් බොත්තමක් දෙවරක් ටැබ් කරන විට, විශේෂයෙන් ඕනෑම හේතුවක් නිසා පද්ධතිය අධික ලෙස පැටවෙන විට මෙය ඔබගේ යෙදුම බිඳ දැමිය හැකිය. අරාව වෙතින් ක්‍රියාකාරකම් ඉවත් කිරීමෙන් මෙය වළක්වා ගත හැකිය.
බලාපොරොත්තු
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.