Tôi có phiên bản sửa đổi của ứng dụng mẫu trò chuyện qua bluetooth. Tôi đã thiết lập một số ScheduledExecutorService
gửi lệnh qua bluetooth với tốc độ được xác định trước bằng cách sử dụng scheduleAtFixedRate
.Làm cách nào để thay đổi tốc độ hoặc thời gian của tác vụ lặp lại bằng cách sử dụng ScheduledExecutorService?
Tôi đã thiết lập một số PreferenceActivity
để cho phép khoảng thời gian được người dùng sửa đổi. Nhưng tôi không chắc chắn làm thế nào để có được các nhiệm vụ lặp lại thực tế xảy ra với thời gian cập nhật. Tôi có cần hủy và khởi động lại ScheduledExecutorService
bằng cách nào đó không?
Đây là các phần có liên quan của mã của tôi.
private ScheduledExecutorService scheduleTaskExecutor;
public long ReadInterval = 1;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
scheduleTaskExecutor = Executors.newScheduledThreadPool(5);
...
// This schedule a task to run every 1 second:
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
// If you need update UI, simply do this:
runOnUiThread(new Runnable() {
public void run() {
// update your UI component here.
if (connected == true) {
sendMessage("READ");
if (D) Log.i(TAG, "In Run!");
}
}
});
}
}, 0, ReadInterval, TimeUnit.SECONDS);
}
Và tôi đang cố cập nhật ReadInterval
tại đây. ReadInterval
đang được cập nhật nhưng khoảng thời gian lệnh định kỳ không được cập nhật.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (D)
Log.d(TAG, "onActivityResult " + resultCode);
switch (requestCode) {
case REQUEST_CONNECT_DEVICE:
...
case REQUEST_ENABLE_BT:
...
case REQUEST_SETTINGS:
// When returning from settings activity
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String Pref = sharedPref.getString(SettingsActivity.KEY_PREF_READINTERVAL, "");
ReadInterval = Long.valueOf(Pref);
Toast.makeText(this, Pref,
Toast.LENGTH_SHORT).show();
Log.d(TAG, "Settings Activity Result");
}
}
xem bài đăng sau đâyhttp: //stackoverflow.com/questions/1519091/scheduledexecutorservice-with-variable-delay – sasankad