마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

노티바에 계속 떠있는 캘린더

0 추천
학교에서 안드로이드 스튜디오 기초를 배웠고 이 후에 혼자 연습으로 노티바에 계속 상주해있는 캘린터앱을 만드려고합니다.

어떻게 해야 노티바에 캘린더를 올려놓고 스와이프해도 지워지지않고 할수있나요?

자세한 설명은 안해주셔도되고, 제가 찾을수있는 키워드만 알려주셔도됩니다.
턱돌이 (170 포인트) 님이 2017년 1월 22일 질문

2개의 답변

0 추천
 
채택된 답변

포그라운드에서 서비스 실행


포그라운드 서비스는 사용자가 능동적으로 인식하고 있으므로 메모리 부족 시에도 시스템이 중단할 후보로 고려되지 않는 서비스를 말합니다. 포그라운드 서비스는 상태 표시줄에 대한 알림을 제공해야 합니다. 이것은 "진행 중" 제목 아래에 배치되며, 이는 곧 해당 알림은 서비스가 중단되었거나 포그라운드에서 제거되지 않은 이상 해제될 수 없다는 뜻입니다.

예를 들어 서비스에서 음악을 재생하는 음악 플레이어는 포그라운드에서 실행되도록 설정해야 합니다. 사용자가 이것의 작동을 분명히 인식하고 있기 때문입니다. 상태 표시줄에 있는 알림은 현재 노래를 나타내고 사용자로 하여금 음악 플레이어와 상호작용할 액티비티를 시작하게 해줄 수도 있습니다.

서비스가 전경에서 실행되도록 요청하려면 startForeground()를 호출하면 됩니다. 이 메서드는 두 개의 매개변수를 취합니다. 그 중 하나는 해당 알림을 고유하게 식별하는 정수이고 다른 하나는 상태 표시줄에 해당되는 Notification입니다. 예:

Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
        System.currentTimeMillis());
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
        getText(R.string.notification_message), pendingIntent);
startForeground(ONGOING_NOTIFICATION_ID, notification);

주의: startForeground()에 지정하는 정수 ID가 0이면 안 됩니다.

서비스를 전경에서 제거하려면 stopForeground()를 호출하면 됩니다. 이 메서드는 부울 값을 취하며, 이것이 상태 표시줄 알림도 제거할지 여부를 나타냅니다. 이 메서드는 서비스를 중단시키지 않습니다. 그러나, 서비스가 포그라운드에서 실행 중인 동안 서비스를 중단시키면 알림도 마찬가지로 제거됩니다.

알림에 대한 자세한 정보는 상태 표시줄 알림 생성을 참조하세요

안드로이드 레퍼런스 사이트에서 인용하였습니다.

참고 : https://developer.android.com/guide/components/services.html?hl=ko#Lifecycle

Development Guy (70,570 포인트) 님이 2017년 1월 23일 답변
턱돌이님이 2017년 1월 23일 채택됨
0 추천
foreground service를 돌리시면 됩니다
prague (26,200 포인트) 님이 2017년 1월 23일 답변
답변감사합니다. 안드로이드 스튜디오에서 startForeground(); 가 안나오는데 다른방법은 없나요??
...