Wednesday, July 4, 2012

PushRegistry, tự khởi động ứng dụng…

PushRegistry là gì??
PushRegistry chỉ có trong MIDlet 2.0
PushRegistry được dùng để cho phép ứng dụng tự động khởi động khi có một tác nhân bên ngoài tác động vào. Có 2 loại tác nhân ở đây là
1 Connection được thiết lập(Ví dụ: SMS tới chẳng hạn), loại thứ 2 là hẹn giờ, ví dụ hẹn đến 2h30 thì tự động khởi động chẳng hạn.
Ở đây tôi ví dụ với tác nhân thứ hai, tác nhân thứ nhất bạn có thể tự tìm hiểu. Đây không phải là một chuyên mục lớn nên tôi gợi ý,
các bạn có thể tự khám phá. Sau đây là Code của 1 MIDlet đơn giản ứng dụng PushRegistry.

private void registerAlarm() {
final String className = this.getClass().getName();    //tên MIDlet được đăng ký
final Date d=new Date();    //dùng để xác định thời gian đăng ký
final Calendar cal = Calendar.getInstance();
cal.setTime(d);
//15h55
cal.set(Calendar.HOUR, 15);
cal.set(Calendar.MINUTE, 55);
//việc đăng ký cần được thực hiện trong 1 luồng riêng để tránh treo toàn bộ MIDlet khi chờ đăng ký
Thread t = new Thread(new Runnable(){ // tạm thời tôi viết đối tượng Runnable không tường minh
public void run() {
try {
//đăng ký để MIDlet được tự động nạp vào lúc 15h55
PushRegistry.registerAlarm(className, cal.getTime().getTime() );
} catch (ConnectionNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
});
t.start();
}
/* PushRegistry không nhất thiết là tự động khởi động một ứng dụng, nó có thể dùng trong 1 MIDlet để tự động khởi động 1 Class khác
trong File Jar.
Ví dụ như ta cần tự động đồng bộ dữ liệu giữa Mobile và máy chủ.
Do đó, ta sẽ tạo ra 1 Thread đồng bộ dữ liệu. Rồi trong MIDlet chính, ta sẽ khai báo 1 Timer với 1 TimerTask lặp lại quá trình
tự động khởi động Thread đó, dùng PushRegistry..
Tôi nghĩ để máy có thể tự động khởi động và làm việc tốt thì bạn nên đặt lệnh t.start() ở trong method exitApp(), và chạy ứng dụng
lần đầu cho Registry ghi nhận Permision.
*/

No comments:

Post a Comment