안드로이드 ~ 서비스
10953 단어 안드로이드AndroidStudio안드로이드 개발
≪IntentService≫
① 서비스 클래스 만들기
java class의 폴더→new→service→service(Intent), 어떤 서비스에서도 생성자는 반드시 만듭니다. 이번에는 Service를 만들고 싶었을 뿐이므로 내용은 적당히 Log i를 제시했을뿐입니다.
MyIntentService.java
public class MyIntentService extends IntentService {
private static final String TAG = "MyIntentService";
public MyIntentService() {
//build constructor is a must
super("MyIntentService");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
//This is what service does.
Log.i(TAG, "onHandleIntent: MyIntentService is running");
}
}
② <서비스> 태그 추가
AndroidManifest.xml
<service android:name=".MyIntentService"/>
③ MainActivity에서 Service를 집행한다
MainActivity.java @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(this, MyIntentService.class);
startService(intent);}
그렇다면 앱을 집행하면 아래의 Log 정보를 볼 수 있습니다.
≪Service≫
①Service Class 만들기
Java Class 폴더→New→Service→Service
Bound service는 여기에서 만들 생각이 없었기 때문에, 우선 onBind method는 null을 return합니다. 다음은 onStartCommand와 onDestroy를 Override합니다. Service에는 Thread가 내장되어 있지 않기 때문에 스스로 onStartCommand 안에서 만듭니다. Runnable과 Thread의 내용은 적절하게 로그 정보를 조작합니다. 마지막으로 Service.START_STICKY;를 반환합니다.
MyService.javapublic class MyService extends Service {
public MyService() {
}
private static final String TAG = "MyService";
@Override
public IBinder onBind(Intent intent) {
//we do no bound service here
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//what you want this service to do
Log.i(TAG, "The service is running");
//Creating thread is needed for Service(no need for IntentService)
Runnable r=new Runnable() {
@Override
public void run() {
for (int i=0;i<5;i++){
long futureTime=System.currentTimeMillis()+5000;
while(System.currentTimeMillis()<futureTime){
synchronized (this){
try{
wait(futureTime-System.currentTimeMillis());
Log.i(TAG, "run: The service is processing");
} catch (Exception e){}}
}
}
}
};
Thread mThread=new Thread(r);
mThread.start();
// when service is stopped accidentally,restart the service again
return Service.START_STICKY;
}
@Override
public void onDestroy() {
//what action when the service is stopped.
Log.i(TAG, "The service is stopped");
}
②Service Class를 MainActivity로 집행합니다.
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(this, MyService.class);
startService(intent);
}
앱을 실행하면 배경의 로그는 다음과 같습니다.
이상은 각서입니다. Bound Service를 사용하는 방법을 알면 여기에서 추가로 기록합니다.
Reference
이 문제에 관하여(안드로이드 ~ 서비스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fang8823/items/31fc8f11c34d9b6fb2f8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class MyIntentService extends IntentService {
private static final String TAG = "MyIntentService";
public MyIntentService() {
//build constructor is a must
super("MyIntentService");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
//This is what service does.
Log.i(TAG, "onHandleIntent: MyIntentService is running");
}
}
<service android:name=".MyIntentService"/>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(this, MyIntentService.class);
startService(intent);}
①Service Class 만들기
Java Class 폴더→New→Service→Service
Bound service는 여기에서 만들 생각이 없었기 때문에, 우선 onBind method는 null을 return합니다. 다음은 onStartCommand와 onDestroy를 Override합니다. Service에는 Thread가 내장되어 있지 않기 때문에 스스로 onStartCommand 안에서 만듭니다. Runnable과 Thread의 내용은 적절하게 로그 정보를 조작합니다. 마지막으로 Service.START_STICKY;를 반환합니다.
MyService.java
public class MyService extends Service {
public MyService() {
}
private static final String TAG = "MyService";
@Override
public IBinder onBind(Intent intent) {
//we do no bound service here
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//what you want this service to do
Log.i(TAG, "The service is running");
//Creating thread is needed for Service(no need for IntentService)
Runnable r=new Runnable() {
@Override
public void run() {
for (int i=0;i<5;i++){
long futureTime=System.currentTimeMillis()+5000;
while(System.currentTimeMillis()<futureTime){
synchronized (this){
try{
wait(futureTime-System.currentTimeMillis());
Log.i(TAG, "run: The service is processing");
} catch (Exception e){}}
}
}
}
};
Thread mThread=new Thread(r);
mThread.start();
// when service is stopped accidentally,restart the service again
return Service.START_STICKY;
}
@Override
public void onDestroy() {
//what action when the service is stopped.
Log.i(TAG, "The service is stopped");
}
②Service Class를 MainActivity로 집행합니다.
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(this, MyService.class);
startService(intent);
}
앱을 실행하면 배경의 로그는 다음과 같습니다.
이상은 각서입니다. Bound Service를 사용하는 방법을 알면 여기에서 추가로 기록합니다.
Reference
이 문제에 관하여(안드로이드 ~ 서비스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fang8823/items/31fc8f11c34d9b6fb2f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)