如何 运行 一个函数在后台和前台 Android Studio(JAVA)
How to run a function in the background as well as in the foreground Android Studio(JAVA)
我有一个功能,我需要 运行 这个功能在后台和前台。此函数从 BLE 服务器读取值。当我点击按钮时,它给了我更新的值,但我不想从点击中获取值。我每次都想要 运行 并更新文本字段中的值。
public void readData(){
if(manager.getConnectedDevices().size()<=0){
Toast.makeText(ModeFragment.this.getActivity(),"No connected devices", Toast.LENGTH_LONG).show();
return;
}
device1 = manager.getConnectedDevices().get(0);
Map<String , String> reciveData = getSpecificServiceInfo(device1 , CHARACTERISTIC_READABLE);
for (Map.Entry<String, String> e : reciveData.entrySet()){
manager.read(device1, e.getKey(), e.getValue(), new BleReadCallback() {
@Override
public void onRead(byte[] data, BleDevice device) {
Toast.makeText(ModeFragment.this.getActivity(), "Read success! data: " + new String(data), Toast.LENGTH_LONG).show();
// String str = data.toString();
// List<String> data1 = Arrays.asList(str.split(","));
textView.setText(new String(data));
intent.putExtra("data" , new String(data));
}
@Override
public void onFail(int failCode, String info, BleDevice device) {
// Toast.makeText(ModeFragment.this.getActivity(), "Read fail! data: " + info, Toast.LENGTH_LONG).show();
}
});
}
}
创建方法:
btnread.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
readData();
}
});
您可以使用处理程序和可运行对象。 runnable 将负责后台工作,然后处理程序将 post 它交给 UI 线程。
Handler mainHandler = new Handler(getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {....} // This is the work to do on the background
};
mainHandler.post(myRunnable);
您可以查看这部分文档:https://developer.android.com/training/multiple-threads/communicate-ui
我有一个功能,我需要 运行 这个功能在后台和前台。此函数从 BLE 服务器读取值。当我点击按钮时,它给了我更新的值,但我不想从点击中获取值。我每次都想要 运行 并更新文本字段中的值。
public void readData(){
if(manager.getConnectedDevices().size()<=0){
Toast.makeText(ModeFragment.this.getActivity(),"No connected devices", Toast.LENGTH_LONG).show();
return;
}
device1 = manager.getConnectedDevices().get(0);
Map<String , String> reciveData = getSpecificServiceInfo(device1 , CHARACTERISTIC_READABLE);
for (Map.Entry<String, String> e : reciveData.entrySet()){
manager.read(device1, e.getKey(), e.getValue(), new BleReadCallback() {
@Override
public void onRead(byte[] data, BleDevice device) {
Toast.makeText(ModeFragment.this.getActivity(), "Read success! data: " + new String(data), Toast.LENGTH_LONG).show();
// String str = data.toString();
// List<String> data1 = Arrays.asList(str.split(","));
textView.setText(new String(data));
intent.putExtra("data" , new String(data));
}
@Override
public void onFail(int failCode, String info, BleDevice device) {
// Toast.makeText(ModeFragment.this.getActivity(), "Read fail! data: " + info, Toast.LENGTH_LONG).show();
}
});
}
}
创建方法:
btnread.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
readData();
}
});
您可以使用处理程序和可运行对象。 runnable 将负责后台工作,然后处理程序将 post 它交给 UI 线程。
Handler mainHandler = new Handler(getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {....} // This is the work to do on the background
};
mainHandler.post(myRunnable);
您可以查看这部分文档:https://developer.android.com/training/multiple-threads/communicate-ui