2021.03.05
1. ์กํฐ๋นํฐ ์๋ช ์ฃผ๊ธฐ
์๋๋ก์ด๋ ์์คํ
์์ ์กํฐ๋นํฐ๋ ๋ค์๊ณผ ๊ฐ์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ๋๋ค.
๋จ์ํ ํ๋ฉด ์ด 6๊ฐ์ง์ ์ฝ๋ฐฑ ํจ์
onCreate->onStart->onResume->onPause->onStop->onDestroy ์ด๋ค.
์ฌ๊ธฐ์ ๋์ฌ๊ฒจ ๋ด์ผํ ์ฝ๋ฐฑํจ์๋ onResume๊ณผ onPause ์ด๋ค.
onResume๊ณผ onPause๋ ๊ฐ๊ฐ ํ๋ฉด์ด ๋ณด์๋ค๊ฐ ์๋ณด์ผ๋ ์คํ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ํจ์๋ฅผ ์ด์ฉํ๋ฉด ํ๋ฉด์ด ์์ด์ง ์ํ์์ ์์คํ
์ ์ํด ์๋์ ์ผ๋ก ํ๋ฉด์ด ์์ด์ง๋ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํด๋ ์ ์๋ค.
์ด๋ ์ฌ์ฉ๋๋ ๋ฉ์๋๊ฐ getSharedPreferences() ๋ฉ์๋ ์ด๋ค.
ํ๋ฉด์ด ๋ณด์ด์ง ์์๋ ํธ์ถ๋๋ onPause ๋ฉ์๋์์ getSharedPreferences()๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํด๋๊ณ
SharedPreferences preference = getSharedPreferences("pref", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = preference.edit();
editor.putString(```);
editor.commit(); // commit์ ํด์ฃผ์ด์ผ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
์ด ๋ฐ์ดํฐ๋ฅผ onResume ๋ฉ์๋์์ getSharedPreferences() ๋ฉ์๋๋ฅผ ํตํด ๋ค์ ๋ฐ์ ์ ์๋ฐ. getSharedPreferences() ๋ฉ์๋๋ฅผ ํตํด ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ญ์ ๋ ๋๊น์ง ์์ด์ง์ง ์๋๋ค.
SharedPreferences preference = getSharedPreferences("pref", Activity.MODE_PRIVATE);
if ((preference != null) && (preference.contains("name")) ){
String name = preference.getString('''); ///name์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
}
2. ์๋น์ค
์๋น์ค๋, ์กํฐ๋นํฐ์ ๋ฌ๋ฆฌ ํ๋ฉด์์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋ ์๋๋ก์ด๋ ๊ตฌ์ฑ์์๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฆ, ํ๋ฉด์์ด ๋ณด์ด์ง ์๋ ์์ญ์์ ๋์๊ฐ๊ฒ ๋๋ค. ์๋ฅผ๋ค์ด ๋ฉ์ ์ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฉ์์ง๋ฅผ ํญ์ ์์ ๋ฐ์ ์ ์๋ ์ํ์ฌ์ผ ํ๋ค. ๋ฐ๋ผ์ ์กํฐ๋นํฐ๊ฐ ์๋ ์๋น์ค๋ฅผ ์ด์ฉํด์ผ ํ๋ฉด์ด ์๋ ์ํ์์๋ ๋ฉ์์ง๋ฅผ ์์ ํ ์ ์๋ค.1) ์๋น์ค ์์
์ฐ์ ์๋น์ค๋ฅผ ์์ํ๊ธฐ ์ํด์๋ **AndroidManifest**์ <service> ํ๊ทธ๋ฅผ ํตํด ์๋น์ค๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>
๊ทธ ๋ค์ ์๋น์ค๋ฅผ startService() ๋ฉ์๋๋ฅผ ํตํด ์๋น์ค๋ฅผ ์คํ์ํจ๋ค. ์ด๋ ์๋น์ค์ ์ธํ ํธ๋ฅผ ๋ด์์ ์คํ์ํฌ ์ ์๋ค.
Intent intent = new Intent(''');
startService(intent);
์๋น์ค์ ์๋ช
์ฃผ๊ธฐ๋ onCreate()๋ก ๋ง๋ค์ด์ง๊ณ ๋ณ๋ค๋ฅธ ๊ณผ์ ์์ด onDestroy()๋ก ์ข
๋ฃ๋๋ค. ์ฒ์ startService()๋ก ์๋น์ค๋ฅผ ์คํ์ํค๋ฉด ์๋น์ค๋ ๊ณ์ ์คํ๋๋ค๊ฐ stopService() ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋๊น์ง ์คํ๋๋ค. ์ค๊ฐ์ ์์คํ
์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ ์๋น์ค๋ฅผ ์ค์ค๋ก ์ข
๋ฃ์ํฌ์๋ ์๋ค.
2) ์๋น์ค ์คํ
์๋น์ค๋ onCreate()๋ก ๋ง๋ค์ด์งํ, ์์คํ ์ด ์๋น์ค ํด๋์ค์ ์๋ onStartCommand() ์ฝ๋ฐฑ ๋ฉ์๋๋ฅผ ์คํ์ํจ๋ค. public int onStartCommand(Intent intent, int flags, int startId) {
/// ๋ฐ์ intent๋ ์ด์ฉํ ์ ์์.
}
3) ์๋น์ค์์ ์กํฐ๋นํฐ๋ก ๋ฐ์ดํฐ ์ ๋ฌ
๋ง์ฐฌ๊ฐ์ง๋ก ์ธํ ํธ๋ฅผ ์ ์ธํด์ ์ ๋ฌํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๊ฐ๋ฐ์ดํฐ๋ก ๋ฃ์ด์คํ์ startActivity()์ ์ธํ ํธ๋ฅผ ๋ฃ์ด์ ๋ณด๋ด์ฃผ๋ฉด ๋๋ค.์ด๋ ํ๋ฉด์ด ์๋ ์๋น์ค์์ ํ๋ฉด์ด ์๋ ์กํฐ๋นํฐ๋ฅผ ๋ถ๋ฌ์ผ ํ๋ ๊ฒ์ด๋ฏ๋ก ์๋ก์ด Task๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค. Task๋ ์กํฐ๋นํฐ๊ฐ ์ ์ฅ๋์ด ์๋ stack์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ฐ๋ผ์ ์ธํ ํธ์ FLAG_ACTIVITY_NEW_TASK ํ๋๊ทธ๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
Intent intent = new Intent(''');
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
showIntent.putExtra(''');
startActivity(showIntent);
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(2021.03.05), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@ajdxjdrnfl/2021.03.05์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค