알림을 표시하지 않고 Foreground ()를 시작하는 방법은 무엇입니까?


87

서비스를 만들고 포 그라운드에서 실행하고 싶습니다.

대부분의 예제 코드에는 알림이 있습니다. 하지만 알림을 표시하고 싶지 않습니다. 가능합니까?

몇 가지 예를 들어 주시겠습니까? 대안이 있습니까?

내 앱 서비스가 미디어 플레이어를 수행하고 있습니다. 앱을 제외하고 시스템이 내 서비스를 죽이지 않게 만드는 방법 (예 : 버튼으로 음악 일시 중지 또는 중지).


11
알림없이 "Foreground"서비스를 가질 수 없습니다. 기간.
— Jug6ernaut

1
"가짜"알림을 보내는 것은 어떻습니까? 그게 속임수인가요?
— Muhammad Resna Rizki Pratama 2012-06-09

포 그라운드 알림이 설정되면 Rubber 앱을 사용하여 '백그라운드 알림 실행'을 삭제할 수 있습니다 .
— 로랑

1
@MuhammadResnaRizkiPratama, 수락 된 답변을 변경 하시겠습니까? 이 질문은 매우 인기가 있지만 받아 들여지는 대답은 완전히 구식이며 너무 무겁고 개발자가 왜 이것을 필요로하는지 가정합니다. 이 답변 은 신뢰할 수 있고 OS 버그를 악용하지 않으며 대부분의 Android 기기에서 작동하기 때문에이 답변을 제안 합니다.
— Sam

답변:


95

안드로이드 플랫폼의 보안 기능으로, 당신은 할 수없는 , 아래에 어떤 상황도 통지를하지 않고 foregrounded 서비스가있다. 이는 포 그라운드 서비스가 더 많은 양의 리소스를 소비하고 백그라운드 서비스와 다른 스케줄링 제약 (즉, 빠르게 종료되지 않음)이 적용되고 사용자가 배터리를 먹는 원인을 알아야하기 때문입니다. 그러니 이러지 마세요 .

그러나, 그것은 이다 , 즉는 "가짜"알림을 가질 수 있습니다, 당신은 투명 알림 아이콘 (IIRC) 할 수 있습니다. 이것은 사용자에게 극도로 불명예하며 배터리를 죽여 악성 코드를 생성하는 것 외에는 할 이유가 없습니다.


3
감사. 그래서 setForeground에 알림이 필요한 이유가 분명해졌습니다.
— 무하마드 Resna 리즈 키 Pratama는

21
글쎄, 당신은 그것을 할 이유가있는 것 같습니다. 사용자들이 그것을 요구했습니다. 당신이 말한 것처럼 명확하지 않을 수 있지만 테스트 그룹에서 내가 작업하고있는 제품에 대해 요청했습니다. Android에는 항상 실행중인 일부 서비스의 알림을 숨기는 옵션이 있어야합니다. 그렇지 않으면 알림 표시 줄이 크리스마스 트리처럼 보입니다.
— Radu

3
@Radu는 실제로 포 그라운드에 앱이 많으면 안됩니다 . 일정이 다르기 때문에 배터리 수명이 죽을 것입니다 (본질적으로 죽지 않음). 이것은 모드에 대해 허용 될 수 있지만 곧 바닐라 Android로 만드는 옵션이 보이지 않습니다. "사용자"일반적으로 그들에게 가장 모르겠어요 ..
— 크리스토퍼 Micinski

2
당신의 주장을 뒷받침하지 않는 @Radu. "수상을받은 앱"은 일반적으로 시스템 불일치를 통해 Android의 허점을 실제로 "수정"하는 앱입니다 (예 : 작업 킬러). "수상을받은 앱"이 그렇기 때문에 포 그라운드 서비스를 사용해야 할 이유가 없습니다. 그렇게한다면 사용자의 배터리를 죽였다는 것을 인정하는 것입니다.
— Kristopher Micinski

2
분명히이 방법은 4.3부터 더 이상 작동하지 않습니다. plus.google.com/u/0/105051985738280261832/posts/MTinJWdNL8t
— erbi '2013

79

업데이트 : 이것은 Android 7.1에서 "수정"되었습니다. https://code.google.com/p/android/issues/detail?id=213309

4.3 업데이트 이후, 그것은 기본적으로의 불가능 과 함께 서비스를 시작 startForeground()알림을 표시하지 않고.

그러나 공식 API를 사용하여 아이콘을 숨길 수 있습니다. 투명 아이콘이 필요하지 않습니다. ( NotificationCompat이전 버전을 지원하는 데 사용 )

NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setPriority(Notification.PRIORITY_MIN);

알림 자체가 여전히 있어야한다는 사실에 화해했지만 여전히 알림을 숨기고 싶은 사람을 위해 해결 방법을 찾았을 수도 있습니다.

  1. startForeground()알림과 모든 것으로 가짜 서비스를 시작하십시오 .
  2. startForeground()(동일한 알림 ID) 로 실행하려는 실제 서비스를 시작하십시오.
  3. 첫 번째 (가짜) 서비스를 중지합니다 ( stopSelf()및 onDestroy call에서 호출 할 수 있음 stopForeground(true)).

Voilà! 알림이 전혀없고 두 번째 서비스가 계속 실행됩니다.


23
감사합니다. 일부 사람들은 내부 업무용으로 진행되는 Android 개발이 있다는 사실을 인식하지 못하는 것 같습니다 (즉, 시장에 출시되거나 Joe Blow에게 판매되지 않도록 의도 된 것이 아닙니다). 때때로 사람들은 "서비스 알림 표시 중지"와 같은 것을 요구하며 일반적인 소비를 위해 정결하지 않더라도 해결 방법을 보는 것이 좋습니다.
— JamieB 2013-08-20

5
@JamieB 더 이상 동의 할 수 없었습니다 ... Dianne Hackborn에게 백그라운드 서비스의 전체 개념을 재고하고 알림없이 백그라운드에서 서비스를 실행할 수있는 권한을 추가해야한다고 제안했습니다. 알림이 있는지 여부는 개발자에게 중요하지 않습니다. 제거를 요청하는 USER입니다! :) 그건 그렇고, 그것이 당신에게도 작동하는지 확인할 수 있습니까?
— Lior Iluz 2013-08-20

1
@JamieB user875707은 알림 ID가 아닌 아이콘 매개 변수 (아이콘의 리소스 ID)를 0으로 설정하라고 말합니다 (그렇다면 문서에서 "startForeground"가 작동하지 않는다고 말 했으므로).
— wangqi060934 2013-08-31

9
물론 이것이 향후 버전의 플랫폼에서 작동하지 않을 것이라고 가정해야합니다.
— hackbod

1
@JamieB 실제로 지금 Android 5.0.1에서 테스트했으며 여전히 저에게 효과적입니다.
— 리 오르 Iluz

20

이는 Android 7.1에서 더 이상 작동하지 않으며 Google Play의 개발자 정책을 위반할 수 있습니다 .

대신 사용자가 서비스 알림을 차단하도록합니다 .


Lior Iluz 의 답변 에 대한 기술 구현은 다음과 같습니다 .

암호

ForegroundService.java

public class ForegroundService extends Service {

    static ForegroundService instance;

    @Override
    public void onCreate() {
        super.onCreate();

        instance = this;

        if (startService(new Intent(this, ForegroundEnablingService.class)) == null)
            throw new RuntimeException("Couldn't find " + ForegroundEnablingService.class.getSimpleName());
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        instance = null;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

}

ForegroundEnablingService.java

public class ForegroundEnablingService extends Service {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (ForegroundService.instance == null)
            throw new RuntimeException(ForegroundService.class.getSimpleName() + " not running");

        //Set both services to foreground using the same notification id, resulting in just one notification
        startForeground(ForegroundService.instance);
        startForeground(this);

        //Cancel this service's notification, resulting in zero notifications
        stopForeground(true);

        //Stop this service so we don't waste RAM.
        //Must only be called *after* doing the work or the notification won't be hidden.
        stopSelf();

        return START_NOT_STICKY;
    }

    private static final int NOTIFICATION_ID = 10;

    private static void startForeground(Service service) {
        Notification notification = new Notification.Builder(service).getNotification();
        service.startForeground(NOTIFICATION_ID, notification);
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

}

AndroidManifest.xml

<service android:name=".ForegroundEnablingService" />
<service android:name=".ForegroundService" />

적합성

테스트 및 작업 :

  • 공식 에뮬레이터
    • 4.0.2
    • 4.1.2
    • 4.2.2
    • 4.3.1
    • 4.4.2
    • 5.0.2
    • 5.1.1
    • 6.0
    • 7.0
  • Sony Xperia M
    • 4.1.2
    • 4.3
  • 삼성 갤럭시 ?
    • 4.4.2
    • 5.X
  • Genymotion
    • 5.0
    • 6.0
  • CyanogenMod
    • 5.1.1

Android 7.1에서 더 이상 작동하지 않습니다.


2
아직 테스트하지 않았지만 적어도 그것에 대한 권한이 있으면 좋을 것입니다 !!! "Google에"부분에 +1, 내 사용자가 앱을 백그라운드에서 계속 실행하는 데 필요한 알림에 대해 불평하고 있습니다. 또한 스카이프 / 라마 및 기타 다른 앱에 필요한 알림에 대해 불평하고 있습니다
— Rami Dabain

이 예제를 사용하여 알람을 수신하는 방법에 대해 죄송합니다. 알람 관리자로 알람을 설정하는 앱을 개발 중이며 앱을 닫으면 (최근 앱-> 지우기) 모든 알람도 제거되고이를 방지 할 수있는 방법을 찾는 것이 문제입니다
— Ares91

@ Ares91, 그것에 대해 별도의 StackOverflow 질문을 만들고 관련 코드를 포함하여 가능한 한 많은 정보를 포함하십시오. 나는 알람에 대해 잘 모르며이 질문은 서비스에 관한 것입니다.
— Sam

서비스가 먼저 호출되어야한다 @Sam, ForegroundEnablingService 또는를 forground
— 안드로이드 남자

@AndroidManForegroundService
— Sam

14

이것을 사용할 수 있습니다 (@Kristopher Micinski가 제안한대로) :

Notification note = new Notification( 0, null, System.currentTimeMillis() );
note.flags |= Notification.FLAG_NO_CLEAR;
startForeground( 42, note );

최신 정보:

Android KitKat + 릴리스에서는 더 이상 허용되지 않습니다. 그리고 이것은 @Kristopher Micinski가 언급 한대로 백그라운드 작업을 사용자에게 표시하는 Android의 디자인 원칙을 다소 위반한다는 점을 명심하십시오.


2
이 SDK (17) 드로어 블 알림에 전달하면 전경에 갈 것입니다 서비스를 더 이상 받아 들여질 것 같지 않습니다 0입니다
— Snicolas

그것은 버그 였고 희망적으로 수정되었습니다. Foreground 서비스의 아이디어는 죽을 가능성이 적다는 것이며, 이는 사용자가 그 존재를 인식하도록하는 방법입니다.
— Martin Marconcini 2013 년

4
안드로이드 (18)와 함께 알림이 더 이상 보이지 아니라 "앱 자세한 내용은, 터치를 실행하거나 응용 프로그램을 중지"라는 쇼
— 엠마누엘 Moecklin

1
고객의 스크린 샷 : 1gravity.com/k10/Screenshot_2013-07-25-12-35-49.jpg . 나는 4.3 장치도 가지고 있으며 그 결과를 확인할 수 있습니다.
— Emanuel Moecklin 2013

2
경고 : Android 4.1.2 (SDK 16)를 사용하는 Sony Ericsson LT26i (Xperia S)에서 충돌 보고서를 받고 있습니다. android.app.RemoteServiceException : 패키지에서 게시 된 잘못된 알림 ... : 아이콘을 만들 수 없습니다 : StatusBarIcon (pkg = ... id = 0x7f020052 level = 0 visible = true num = 0) SDK 17까지 아이콘 ID도 0으로 설정했습니다. SDK 18에서 유효한 드로어 블 리소스로 설정했습니다. 아마도 SDK 16의 유효한 아이콘 ID가 필요합니다!
— almisoft 2013 년

13

경고 :이 답변이 작동하는 것처럼 보이지만 실제로 는 서비스가 포 그라운드 서비스가되는 것을 조용히 방지합니다 .

원래 답변 :


알림 ID를 0으로 설정하기 만하면됩니다.

// field for notification ID
private static final int NOTIF_ID = 0;

    ...
    startForeground(NOTIF_ID, mBuilder.build());
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    mNotificationManager.cancel(NOTIF_ID);
    ...

얻을 수있는 이점은 Service높은 메모리 압력이없는 한 Android 시스템에 의해 파괴되지 않고 높은 우선 순위로 실행될 수 있다는 것입니다.

편집하다

Pre-Honeycomb 및 Android 4.4 이상에서 작동하도록하려면 NotificationCompat.Builder지원 라이브러리 v7에서 제공하는 Notification.Builder.


1
이것은 4.3 (18) @vlad sol에서 완벽하게 작동합니다. 이 답변에 대해 아직 다른 찬성 투표가없는 이유는 무엇입니까?
— Rob McFeely

Android N Preview 4에서 시도했지만 작동하지 않았습니다. 나는 Notification.Builder지원 라이브러리 v4 NotificationCompat.Builder및 지원 라이브러리 v7을 시도했습니다 NotificationCompat.Builder. 알림 창 또는 상태 표시 줄에 알림이 표시되지 않았지만 getRunningServices()및 을 사용하여 확인했을 때 서비스가 포 그라운드 모드에서 실행되지 않았습니다 dumpsys.
— Sam

@Sam,이 버그는 이전 버전에는 나타나지 않습니다. 맞습니까?
— Anggrayudi H

@AnggrayudiH, "이 버그"란 알림이 나타나지 않는다는 의미입니까? 아니면 서비스가 포 그라운드 모드로 전환되지 않는다는 의미입니까?
— Sam

1
이것은 나를 위해 작동하지 않습니다. 프로세스는 id! = 0이 전송되면 포 그라운드로 시작되지만 id = 0이면 포 그라운드로 시작되지 않습니다. adb shell dumpsys activity services확인에 사용 합니다.
— beetree 2011

8

layout_height = "0dp"인 맞춤 레이아웃을 사용하여 Android 9 이상에서 알림을 숨길 수 있습니다.

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NotificationUtils.CHANNEL_ID);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.custom_notif);
builder.setContent(remoteViews);
builder.setPriority(NotificationCompat.PRIORITY_LOW);
builder.setVisibility(Notification.VISIBILITY_SECRET);

custom_notif.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="0dp">
</LinearLayout>

Pixel 1, Android 9에서 테스트되었습니다.이 솔루션은 Android 8 이하에서 작동하지 않습니다.


좋은 해결 방법입니다. 또한 Android 10에서는 아이콘이 필요하다고 생각합니다. 아이콘에 투명한 자리 표시 자 이미지를 사용하면 문제가 해결됩니다.
— shyos

7

업데이트 : 더 이상 Android 4.3 이상에서 작동하지 않습니다.


한 가지 해결 방법이 있습니다. 아이콘을 설정하지 않고 알림을 생성하면 알림이 표시되지 않습니다. 어떻게 작동하는지 모르지만 작동합니다. :)

    Notification notification = new NotificationCompat.Builder(this)
            .setContentTitle("Title")
            .setTicker("Title")
            .setContentText("App running")
            //.setSmallIcon(R.drawable.picture)
            .build();
    startForeground(101,  notification);

3
Android N Preview 4에서는 작동하지 않습니다. Android는 (YourServiceName) is running아이콘을 지정하지 않으면 자신 의 알림 대신 알림을 표시 합니다. CommonsWare에 따르면 Android 4.3 이후에 해당됩니다. commonsware.com/blog/2013/07/30/…
— Sam

1
오늘 몇 가지 테스트를 수행 한 결과 Android 4.3 이상에서 작동하지 않음을 확인했습니다.
— Sam

5

업데이트 : 더 이상 Android 4.3 이상에서 작동하지 않습니다.


Notification 생성자에 대한 icon 매개 변수를 0으로 설정 한 다음 결과 알림을 startForeground ()에 전달했습니다. 로그에 오류가없고 알림이 표시되지 않습니다. 하지만 서비스가 성공적으로 포 그라운드되었는지 여부는 모르겠습니다. 확인할 방법이 있습니까?

편집 됨 : dumpsys로 확인했으며 실제로 서비스는 내 2.3 시스템에서 포 그라운드됩니다. 아직 다른 OS 버전으로 확인하지 않았습니다.


9
"adb shell dumpsys activity services"명령을 사용하여 "isForeground"가 true로 설정되어 있는지 확인합니다.
— 블랙

1
또는 빈 Notification()생성자를 호출하십시오 .
— johsin18

이것은 나를 위해 일했습니다. 처음으로 서비스를 밤새 실행하도록하여 확실히 포 그라운드에 있고 (dumpsys가 그렇다고 말합니다) 알림이 없습니다.
— JamieB

Android 4.3 (API 18)에서는 더 이상 작동하지 않습니다. OS는 알림 창에 자리 표시 자 알림을 넣습니다.
— 샘

4

포 그라운드 서비스 알림 차단

여기에서 대부분의 답변은 작동하지 않거나 포 그라운드 서비스가 중단 되거나 Google Play 정책을 위반 합니다.

안정적이고 안전하게 알림을 숨기는 유일한 방법은 사용자가 알림을 차단하도록하는 것입니다.

Android 4.1-7.1

유일한 방법은 앱의 모든 알림 을 차단 하는 것입니다 .

  1. 사용자를 앱의 세부 정보 화면으로 보냅니다.

    Uri uri = Uri.fromParts("package", getPackageName(), null);
    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).setData(uri);
    startActivity(intent);
    
  2. 사용자가 앱의 알림을 차단하도록합니다.

이것은 또한 앱의 토스트를 차단합니다.

안드로이드 8.0-8.1

OS가 " 백그라운드에서 실행 중 "또는 " 배터리 사용 "알림으로 대체하기 때문에 Android O에서 알림을 차단할 가치가 없습니다 .

Android 9 이상

알림 채널 을 사용 하여 다른 알림에 영향을주지 않고 서비스 알림을 차단합니다.

  1. 알림 채널에 서비스 알림 할당
  2. 사용자를 알림 채널 설정으로 보내기

    Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
        .putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName())
        .putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId());
    startActivity(intent);
    
  3. 사용자 차단 채널 알림


2

버전 4.3 (18) 이상은 서비스 알림을 숨길 수 없지만 아이콘을 비활성화 할 수 있으며 버전 4.3 (18) 이하는 알림을 숨길 수 있습니다.

Notification noti = new Notification();
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
    noti.priority = Notification.PRIORITY_MIN;
}
startForeground(R.string.app_name, noti);

이 답변은 정확하고 유용 할 수 있지만 문제 해결에 도움이되는 방법을 설명하기 위해 몇 가지 설명을 함께 포함하는 것이 좋습니다. 이것은 작동을 멈추게하는 변경 (아마도 관련이 없음)이 있고 사용자가 한 번 작동 한 방식을 이해해야하는 경우에 특히 유용합니다.
— Kevin Brown

Android 4.3은 실제로 API 18이라고 생각합니다. 또한이 메서드는 상태 표시 줄에서 아이콘 만 숨 깁니다. 아이콘은 알림에 여전히 존재합니다.
— Sam

알림에서 아이콘을 숨기려면 빈 이미지를 추가 할 수 있습니다. mBuilder.setSmallIcon (R.drawable.blank);
— vlad sol

1
나는 kitkat 소스를보고 있는데 제로 ID 방법이 작동하지 않는 것 같습니다. ID가 0이면 서비스 레코드가 NOT 포 그라운드로 업데이트됩니다.
— Jeffrey Blattman

2

Android 8.0에서 알림 채널을 사용하지 않아도 여전히 가능하다는 것을 알았습니다.

public class BootCompletedIntentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

                Intent notificationIntent = new Intent(context, BluetoothService.class);    
                context.startForegroundService(notificationIntent);

            } else {
                //...
            }

        }
    }
}

그리고 BluetoothService.class에서 :

 @Override
    public void onCreate(){    
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

            Intent notificationIntent = new Intent(this, BluetoothService.class);

            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

            Notification notification = new Notification.Builder(this)
                    .setContentTitle("Title")
                    .setContentText("App is running")
                    .setSmallIcon(R.drawable.notif)
                    .setContentIntent(pendingIntent)
                    .setTicker("Title")
                    .setPriority(Notification.PRIORITY_DEFAULT)
                    .build();

            startForeground(15, notification);

        }

    }

지속적인 알림은 표시되지 않지만 Android 'x 앱이 백그라운드에서 실행 중입니다'알림이 표시됩니다.


"서비스 통지를 무효 채널 startForeground에 대한 나쁜 알림 : : : java.lang.RuntimeException가"안드로이드 8.1에서
— T-IGRA

개인적으로 apps are running in the background알림이 앱별 알림보다 더 나쁘다고 생각 하므로이 접근 방식이 그만한 가치가 있는지 모르겠습니다.
— Sam

-2

업데이트 : 더 이상 Android 7.1 이상에서 작동하지 않습니다.


다음은 앱의 oom_adj를 1로 만드는 방법입니다 (ANDROID 6.0 SDK 에뮬레이터에서 테스트 됨). 임시 서비스를 추가하십시오 startForgroundService(NOTIFICATION_ID, notificion). 그런 다음 startForgroundService(NOTIFICATION_ID, notificion)동일한 알림 ID로 임시 서비스 호출 을 다시 시작하고 잠시 후 임시 서비스 호출 stopForgroundService (true)에서 ontification을 해제합니다.


이것이 내가 아는 유일한 작업 솔루션입니다. 그러나 이미 다른 답변으로 덮여 있습니다.
— Sam

-3

애플리케이션을 지속적으로 선언 할 수도 있습니다.

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/Theme"
    *android:persistent="true"* >
</application>

이것은 본질적으로 앱이 더 높은 메모리 우선 순위로 설정되어 앱이 종료 될 가능성을 줄입니다.


5
이것은 잘못된 것입니다. 시스템 앱만 영구적 일 수 있습니다. groups.google.com/forum/?fromgroups=#!topic/android-developers/…
— Snicolas

-6

몇 달 전에 간단한 미디어 플레이어를 개발했습니다. 그래서 내가 믿는 것은 당신이 다음과 같은 것을하고 있다면 :

Intent i = new Intent(this, someServiceclass.class);

startService (i);

그러면 시스템이 서비스를 종료 할 수 없습니다.

참고 : 시스템이 서비스를 중지하는 경우 논의하는 단락을 읽으십시오.


일부 기사를 읽었습니다. startService () 만하면 시스템에 더 많은 메모리가 필요합니다. 따라서 시스템은 해당 서비스를 종료합니다. 그게 사실입니까? 나는 서비스에서 실험을 할 시간이 없습니다.
— Muhammad Resna Rizki Pratama 2012-06-09

1
Muhammad는 사실입니다. startForeground ()의 목적은 서비스가 더 오래 지속될 수 있도록 백그라운드 서비스보다 더 높은 "메모리 우선 순위"를 효과적으로 제공하는 것입니다. startForeground ()는 알림을 사용하여 사용자가 실행중인 더 지속적이고 중단하기 어려운 서비스를 더 잘 알 수 있도록해야합니다.
— DustinB 2012

이것은 사실이 아닙니다. 안드로이드에서 죽일 수없는 서비스를 만드는 것은 사실상 불가능합니다. Android는 비포 그라운드 서비스를 즉시 종료하여 메모리를 확보합니다.
— Sam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.