10

Tôi sử dụng số AlarmManager để bắt đầu dịch vụ. Khi tôi thiết lập các AlarmManager tôi sử dụng PendingIntent và sử dụng một requestCode duy nhất mà là bằng một hàng id trong cơ sở dữ liệu của tôi.PendingIntent get requestCode

PendingIntent pendingIntent = PendingIntent.getBroadcast(SettingsActivity.this, 
          lecture.getId(), myIntent, 0); 

Làm cách nào tôi có thể truy xuất id đó trong dịch vụ của mình khi bắt đầu? Về cơ bản, tôi chỉ cần tham số requestCode. Tôi muốn sử dụng id đó để lấy dữ liệu từ cơ sở dữ liệu của tôi và hiển thị nó trong một thông báo. Tôi đã thực hiện tất cả các công cụ, tôi chỉ cần requestCode đó. Có thể lấy nó không?

Cảm ơn

Trả lời

14

Bạn cần phải đặt lecture.getId() vào extras của myIntent của bạn. Theo Javadoc requestCode thậm chí còn chưa được sử dụng.

// store id 
myIntent.putExtra("id", lecture.getId()); 

// read id or -1, if there is no such extra in intent 
int id = myIntent.getIntExtra("id", -1); 
+0

Nhưng tôi cần id đó ngay cả khi ứng dụng bị giết. Khi một ứng dụng bị giết, dữ liệu phụ sẽ bị xóa. Làm thế nào tôi có thể nhận được các dữ liệu cần thiết từ cơ sở dữ liệu trên dịch vụ khi id trong extras sẽ là null? Hay tôi sai về điều này? – Aksiom

+1

@Aksiom the 'PendingIntent' khi bị sa thải sẽ có thêm, nó không liên quan gì đến quá trình bị giết,' PendingIntent' là mục đích chạy độc lập với ứng dụng, ngay cả khi ứng dụng của bạn không chạy !! –

+0

@Aksiom nhưng khi thiết bị được khởi động (khởi động lại) 'PendingIntent' sẽ bị xóa vì vậy ** khi khởi động **, bạn phải đăng ký lại' PendingIntent' với 'AlarmManager' –