일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- lombok
- chatGPT's answer
- oracle
- 인프라
- 리눅스
- 뉴턴역학
- 자바네트워크
- GPT-4's answer
- 웹 크롤링
- flet
- 자바암호
- 코틀린
- python
- kotlin
- write by GPT-4
- NIO
- JVM
- 고전역학
- 유닉스
- 파이썬
- android
- GIT
- 시스템
- Database
- 소프트웨어공학
- 자바
- Java
- Spring boot
- 역학
- write by chatGPT
- Today
- Total
Akashic Records
Android Service Component(Start/Stop type) 본문
Android Service Component(Start/Stop type)
Andrew's Akashic Records 2018. 4. 19. 14:30Introduction
사용자 Interface 환경 필요 없이 긴 시간 동안 작업이 Background 상태로 실행되는 Application 컴포넌트를 “Service”라 합니다.
Service Component에는 2가지 Type이 있습니다.
Started: 이 타입은 다른 어플리케이션 컴포넌트에 의해서 시작(Started)되는 Service입니다. 한번 시작되면 종료 시켜주기 전까지 계속하여 실행됩니다.
Bound: 다른 어플리케이션 컴포넌트의 “bindService” Method가 실행될 때 함께 실행되는 형태입니다. Client-Server 커뮤니케이션에 유용하게 사용됩니다. 또한 서로 다른 프로세스 사이에서도 수행할 수 있고 여러 호출자들이 Service에 바인딩 할 수 있습니다. 서비스에 바인된 호출자가 최소한 하나라도 있을 때까지만 활성화 됩니다.
본 문서에서는 Started Type의 Service에 관해서 살펴보도록 하겠습니다.
Step 1: Service Component 생성
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
/**
*
* @author openmobster@gmail.com
*/
public class DemoService extends Service
Step 2: onStartCommand callback 메서드 구현
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
super.onStartCommand(intent, flags, startId);
//Announcement about starting
Toast.makeText(this, "Starting the Demo Service", Toast.LENGTH_SHORT).show();
//Start a Background thread
isRunning = true;
Thread backgroundThread = new Thread(new BackgroundThread());
backgroundThread.start();
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
Step 3: onDestory callback 메서드 구현
@Override
public void onDestroy()
{
super.onDestroy();
//Stop the Background thread
isRunning = false;
//Announcement about stopping
Toast.makeText(this, "Stopping the Demo Service", Toast.LENGTH_SHORT).show();
}
Step 4: Background Thread 구현
private class BackgroundThread implements Runnable
{
int counter = 0;
public void run()
{
try
{
counter = 0;
while(isRunning)
{
System.out.println(""+counter++);
Thread.currentThread().sleep(5000);
}
System.out.println("Background Thread is finished.........");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
Step 5: “AndroidManifest.xml”에 Service 등록
<service android:name="org.openmobster.app.DemoService">
<intent-filter>
<action android:name="org.openmobster.app.DemoService"/>
</intent-filter>
</service>
Step 6: Activity에서 Service 실행
//Start the Service
Intent start = new Intent("org.openmobster.app.DemoService");
MainActivity.this.startService(start);
Step 7: Service 종료
Intent stop = new Intent("org.openmobster.app.DemoService");
MainActivity.this.stopService(stop);
'오래된글 > Articles' 카테고리의 다른 글
Android BroadcastReceiver을 이용한 전화 수신 Event Catch (0) | 2018.04.19 |
---|---|
Android Notifications (0) | 2018.04.19 |
Java Generic Quick Tutorial (0) | 2018.04.19 |
Android SQLite CRUD App (0) | 2018.04.19 |
The Cost of an Exception (0) | 2018.04.19 |