목차
부팅시 서비스를 구동하게 하기위해선 크게 권한설정, 부팅시 실행될 class, register receiver 로 action등록 이 필요하다.
권한설정 (AndroidManifest.xml)
<receiver android:name=".BootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> // 부팅 완료 후 호출
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
두개로 권한을 열어준다. intent filter 는 저 intent 는 저 함수에 들어갈 수 있다는 필터역할.
부팅시 실행될 class (BootReceiver)
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
checkSocketService(context);
}
public static void checkSocketService(Context context) {
Log.d("ahope_log","checkSocketService");
ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
boolean isRunningService = false;
for(ActivityManager.RunningServiceInfo runningServiceInfo : activityManager.getRunningServices(Integer.MAX_VALUE)) {
if(ConnectionService.class.getName().equals(runningServiceInfo.service.getClassName())) isRunningService = true;
}
if (!isRunningService) {
if(Build.VERSION.SDK_INT >25) context.startForegroundService(new Intent(context, ConnectionService.class));
else context.startService(new Intent(context, ConnectionService.class));
}
}
}
권한을 허가한 파일(.BootReceiver)과 동일한 이름의 class 를 만들어줘야한다.
register receiver 로 action등록 (MainActivity)
//BroadCastReceiver 에 Action 등록
bootReceiver = new BootReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
this.registerReceiver(bootReceiver,intentFilter);
mainactivity oncreate 부분에 action을 등록해두면 (맨 처음 한번만 필요) 앞으로 부팅시마다 인식해서 intent 를 쏴준다..
'개발 > Android Studio' 카테고리의 다른 글
[Android] activity 를 intent 로 실행하는법 (startActivity startActivityForResult) (0) | 2023.03.24 |
---|---|
[Android] sharedpreference (0) | 2023.03.17 |
[Android Studio] Context, getApplicationContext 란 (0) | 2023.03.13 |
[Android Studio] IPC, RPC 차이점 (0) | 2023.03.13 |
[Android Studio] parcel, marshalling 이란 (0) | 2023.03.06 |
부팅시 서비스를 구동하게 하기위해선 크게 권한설정, 부팅시 실행될 class, register receiver 로 action등록 이 필요하다.
권한설정 (AndroidManifest.xml)
<receiver android:name=".BootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> // 부팅 완료 후 호출
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
두개로 권한을 열어준다. intent filter 는 저 intent 는 저 함수에 들어갈 수 있다는 필터역할.
부팅시 실행될 class (BootReceiver)
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
checkSocketService(context);
}
public static void checkSocketService(Context context) {
Log.d("ahope_log","checkSocketService");
ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
boolean isRunningService = false;
for(ActivityManager.RunningServiceInfo runningServiceInfo : activityManager.getRunningServices(Integer.MAX_VALUE)) {
if(ConnectionService.class.getName().equals(runningServiceInfo.service.getClassName())) isRunningService = true;
}
if (!isRunningService) {
if(Build.VERSION.SDK_INT >25) context.startForegroundService(new Intent(context, ConnectionService.class));
else context.startService(new Intent(context, ConnectionService.class));
}
}
}
권한을 허가한 파일(.BootReceiver)과 동일한 이름의 class 를 만들어줘야한다.
register receiver 로 action등록 (MainActivity)
//BroadCastReceiver 에 Action 등록
bootReceiver = new BootReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
this.registerReceiver(bootReceiver,intentFilter);
mainactivity oncreate 부분에 action을 등록해두면 (맨 처음 한번만 필요) 앞으로 부팅시마다 인식해서 intent 를 쏴준다..
'개발 > Android Studio' 카테고리의 다른 글
[Android] activity 를 intent 로 실행하는법 (startActivity startActivityForResult) (0) | 2023.03.24 |
---|---|
[Android] sharedpreference (0) | 2023.03.17 |
[Android Studio] Context, getApplicationContext 란 (0) | 2023.03.13 |
[Android Studio] IPC, RPC 차이점 (0) | 2023.03.13 |
[Android Studio] parcel, marshalling 이란 (0) | 2023.03.06 |