Tôi đang cố cập nhật giao diện người dùng của mình theo số FirstActivity
khi tôi nhận được thông báo nhưng bị nhầm lẫn bởi runOnUiThread
, Runnable
và Handler
. Đây là những gì tôi có: Tôi đang chạy FirstActivity và NotificationService. Khi NotificationService báo lại một thông báo, nó sẽ cập nhật UI đầu tiên.Cập nhật giao diện người dùng từ một dịch vụ (sử dụng trình xử lý?)
Tôi cũng có một dịch vụ khác AlarmService
đang chạy. Hoạt động đầu tiên
@Override
public void onResume() {
super.onResume();
//some other code for alarm service
}
NotificationService
//on receiving notification
private void showNotification(String text) {
//Get activity
Class<?> activityClass = null;
try {
activityClass = Class.forName("com.pakage.FirstActivity");
contextActivity = (Activity) activityClass.newInstance();
//Update UI on FirstActivity not working
contextActivity.runOnUiThread(new Runnable() {
public void run()
{
Looper.prepare();
TextView tv = (TextView) contextActivity.findViewById(R.id.notifyTest);
Looper.loop();
}
});
} catch (Exception e) {
e.printStackTrace();
}
//Shows the notification
Notification n = new Notification();
//... etc
}
tôi tiếp tục nhận được lỗi looper.prepare. Tôi có cần phải đặt thêm mã trong FirstActivity của tôi không?
bạn có thể hiển thị cho chúng tôi thư trong nhật ký của bạn từ logcat không? Ngoài ra, làm thế nào bạn tuyên bố Looper? –
Tôi nhận được 'Không thể tạo trình xử lý bên trong luồng mà không được gọi là lỗi Looper.prepare()'. Looper được khai báo trong phương thức 'showNotification' ở trên – newbie