2011-10-09 7 views
7

내가 진행하고있는 프로젝트에는 두 개의 서로 다른 응용 프로그램이 있습니다. 1 개는 서버이고 다른 하나는 클라이언트입니다. 서버 응용 프로그램에는 onStartCommand() 기능의 서버 스레드를 시작하는 1 서비스 클래스가 있습니다. 서버 스레드 용 클래스는 서비스 클래스 자체에서 정의됩니다. 서버가 클라이언트로부터 데이터를 수신 할 때마다 데이터베이스에 저장됩니다. 문제는 가능한 한 알림이나 토스트 메시지를 통해 새로운 데이터가 도착했다는 것을 사용자에게 알리고 싶습니다. 또한 서비스 클래스 또는 스레드 클래스 또는 서버 서비스를 시작하는 오전 firstActivity 클래스에서 작성해야하는지 여부를 알리는 코드를 어디에 작성해야하는지 알려주십시오. 고맙습니다.백그라운드 서비스에서 알림을 표시하는 방법은 무엇입니까?

+1

중복 가능성 (http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android) – Reno

+0

@ 리노 : 이미이 지부를 언급했지만, 그 코드를 어디에 놓아야하는지, 코드가 불완전한 지 이해하지 못했습니다. 나는 안드로이드에서 초보자입니다. – sagar

답변

3

잘못 읽었습니까? 서버 앱과 클라이언트 앱이 모두 같은 Android 기기에 있습니까?

어쨌든 ApiDemos에서 서비스를 통한 알림 코드를 살펴보십시오.

로컬 서버가 아닌 원격 서버와 모든 대기 시간 문제를 처리 할 것이므로 AsyncTask에서 서비스를 더 잘 래핑하는 것이 좋습니다.

브로드 캐스트 수신기에 대한 자세한 내용은 등록 된 브로드 캐스트 수신기가 서비스/활동을 트리거하는 훌륭한 방법이 될 수 있습니다. 서비스를 무한 루프로 폴링하지 않아도됩니다.

+0

감사합니다. 내 서버 및 클라이언트 응용 프로그램 r 다른 에뮬레이터에서 실행되는 데이터 전송 및 데이터베이스에 저장하는 데 문제가 없습니다. 브로드 캐스트 수신기를 살펴 보겠습니다. 거기에 데이터베이스 테이블에 변화가 감지 할 수있는 방법이 있습니까? 따라서 변경 사항이 발견되면 사용자에게 활동 클래스를 알릴 수 있습니다. – sagar

+0

내가 말했듯이, 나는 방송 수신기를 사용하고 있으며, 작동하지만, 나는 방송과 함께 1 개의 문자열을 보내고 그 문자열을 토스트 메시지에 표시하고자한다. intent.putextra()를 사용했습니다. 하지만 수신기 끝에서 나는 null 값을받는 오전, 나는 문제가 내 여분의 코드를 얻을 수 있습니다, 어떻게하면 데이터를 수신하는 방법을 말해 줄 수 plz 방송의 의도에 의해 보내십시오. – sagar

9

먼저 Notifications을 사용하는 방법에 대한이 기사를 읽어야합니다.

다음으로 알림을 보내려면이 코드를 클라이언트에서 일부 데이터를받는 지점의 서비스 클래스에 작성하면됩니다.

NotificationManager notificationManager = 
    (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
int icon = R.drawable.notification_icon; 
CharSequence notiText = "Your notification from the service"; 
long meow = System.currentTimeMillis(); 

Notification notification = new Notification(icon, notiText, meow); 

Context context = getApplicationContext(); 
CharSequence contentTitle = "Your notification"; 
CharSequence contentText = "Some data has arrived!"; 
Intent notificationIntent = new Intent(this, YourActivityThatYouWantToLaunch.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

int SERVER_DATA_RECEIVED = 1; 
notificationManager.notify(SERVER_DATA_RECEIVED, notification); 
[안드로이드 서비스에서 통지를 전송]의
관련 문제