2011-10-09 40 views
7

Dự án tôi đang làm việc trên có hai ứng dụng khác nhau, 1 là máy chủ và khác là khách hàng. Ứng dụng máy chủ có 1 lớp dịch vụ, khởi tạo chủ đề máy chủ theo chức năng onStartCommand(). Lớp cho chuỗi máy chủ được định nghĩa trong chính lớp dịch vụ. Bất cứ khi nào máy chủ nhận được bất kỳ dữ liệu nào từ máy khách, nó lưu trữ trong cơ sở dữ liệu. Vì vậy, vấn đề là, tôi muốn thông báo cho người dùng rằng dữ liệu mới đã được gửi đến thông báo hoặc thông báo chúc mừng. Cũng cho tôi biết nơi tôi nên viết mã để thông báo, cho dù tôi nên viết trong lớp dịch vụ hoặc lớp học chủ đề hoặc firstActivity lớp mà từ đó tôi bắt đầu dịch vụ máy chủ. Cảm ơn bạn.Cách hiển thị thông báo từ dịch vụ nền?

+1

thể trùng lặp của [Gửi thông báo từ một dịch vụ trong Android] (http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android) – Reno

+0

@ Reno: Tôi đã giới thiệu bài đăng này, nhưng tôi không hiểu tôi nên đặt mã ở đâu, mã đó cũng chưa hoàn thành. Tôi là người mới bắt đầu trong Android. – sagar

Trả lời

3

Tôi đọc này không chính xác? Cả ứng dụng máy chủ và ứng dụng khách của bạn đều trên cùng một thiết bị Android?

Trong mọi trường hợp, hãy nhìn vào các ApiDemos cho mã cho thông báo thông qua một dịch vụ. Và vì bạn có thể sẽ xử lý một máy chủ từ xa (và không phải máy cục bộ) và tất cả các vấn đề về độ trễ được kết hợp với mạng, tôi nghĩ bạn nên gói dịch vụ của mình trong AsyncTask hơn một cách tốt nhất.

Cũng tìm hiểu về Bộ thu phát sóng, Người nhận phát sóng đã đăng ký có thể là cách tuyệt vời để kích hoạt Dịch vụ/Hoạt động mà không cần phải có bản thăm dò dịch vụ của riêng bạn trong vòng lặp vô thời hạn.

+0

Cảm ơn! máy chủ và ứng dụng khách của tôi chạy trên các trình giả lập khác nhau, không có vấn đề gì trong việc truyền dữ liệu và lưu trữ nó trong cơ sở dữ liệu. Tôi sẽ nhìn vào Broadcast Receivers. Có cách nào để phát hiện có sự thay đổi trong bảng cơ sở dữ liệu? Vì vậy, nếu thay đổi được tìm thấy tôi có thể thông báo cho người dùng từ lớp hoạt động. – sagar

+0

Như bạn đã nói, tôi đã sử dụng bộ thu phát sóng, và nó đang hoạt động, nhưng tôi muốn gửi 1 chuỗi với phát sóng và hiển thị chuỗi đó trong tin nhắn bánh mì nướng. Tôi đã sử dụng intent.putextra(). nhưng ở cuối người nhận tôi nhận được giá trị null, tôi nghĩ rằng vấn đề là trong mã của tôi nhận được thêm, u có thể plz cho tôi biết làm thế nào để nhận dữ liệu gửi theo ý định phát sóng. – sagar

9

Trước tiên, bạn cần phải đọc bài viết này về cách sử dụng Notifications.

Tiếp theo sử dụng quyền này để gửi Thông báo, bạn có thể viết mã này trong lớp dịch vụ tại thời điểm bạn nhận được một số dữ liệu từ máy khách.

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); 
Các vấn đề liên quan