오늘은 서비스에 대해 알아봅시다.
Service는 백그라운드에서 실행되며 사용자와 직접적인 상호작용은 하지않는다.
클라이언트에서 어떤식으로 호출하는가에 따라 두 가지로 나뉜다.
1. 백그라운드 데몬 : 일반적으로 흔히 알고있는 백그라운드 서비스 ex)뮤직플레이어
2. 원격호출인터페이스 : 클라이언트를 위해 특정한 기능을 제공하는 역할. 자신의 기능을 메서드로 노출시켜두고 클라이언트는 이 메서드를 호출함으로써 서비스를 이용한다.
ex)다른 패키지에 있는 Activity에서 해당 서비스의 메서드를 호출해 이용할 수 있다
-----------------------------------------------------------------
이 중 이번 글에서 다뤄 볼 예제는 데몬 서비스이다.
우선 작성해야 할 것은
1. Activity를 상속받은 클래스
2. Service를 상속받은 클래스
3. 레이아웃 activity_main.xml
4. AndroidManifest.xml
5. string.xml
을 작업 할 것이다.
-----------------------------------------------------------------
1. Activity
package bit.java39.servicetest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void mOnclick(View view) { Intent intent; if (view.getId() == R.id.newsStart) { // 인텐트에 서비스의 클래스 명이 아닌 액션명을 지정했음. // 외부에서는 다른 패키지에 속한 클래스를 직접 참조할 수 없으므로 액션명을 사용해야한다. // 두 방법의 결과는 동일하다. intent = new Intent("bit.java39.servicetest.NEWS"); // intent = new Intent(this, NewsService.class); startService(intent); textView = (TextView) findViewById(R.id.textView); textView.setText(intent.toString()); } else if (view.getId() == R.id.newsEnd) { intent = new Intent("bit.java39.servicetest.NEWS"); // intent = new Intent(this, NewsService.class); stopService(intent); textView = (TextView) findViewById(R.id.textView); textView.setText(intent.toString()); } } }
댓글 없음:
댓글 쓰기