0

因此,我在进行维护时遇到了一个 Android 应用程序的问题,他们在应用程序上有一个回调,当某些事情发生时触发,并且有一个 runOnUiThread。但是,它似乎不起作用,但是。当我最小化应用程序并恢复它时......它显示了更改。(我已经尝试过 invalidate 和 postInvalidate ......唯一似乎工作的命令是重新创建,但它显示黑屏并重新加载应用程序,我不希望这种情况发生)

private ServiceCallback<ProductIntoItem> getInfoCallback = new ServiceCallback<ProductIntoItem>() {
    @Override
    public void onSuccess(final ProductIntoItem productIntoItem) {

        runOnUiThread(new Runnable() {
            @Override
            public void run() {

                Tag tag = new Tag("", epcReadings.get(0));
                tabLayout.addTab(tabLayout.newTab().setText("info item"));
                tabLayout.addTab(tabLayout.newTab().setText("info sku"));
                tabLayout.setOnTabSelectedListener(InfoProductActivity.this);
                infoItemFragment = InfoItemFragment.newInstance(productIntoItem, location, tag.getSku());
                infoSkuFragment = InfoSkuFragment.newInstance(productIntoItem, location, tag.getSku());
                initWithFragment(R.id.container_tabs_info, infoItemFragment);

                recreate();
            }
        });
    }

    @Override
    public void onFailure(NetworkException e) {
    }
};

编辑

从这部分代码调用回调:(onTagRead 方法是蓝牙连接设备的本机方法。这都在 Running Activity 类中)

@Override
public void onTagRead(String epc) {

    if (epc != null) {
        rfIdManager.stopTagReading();
        epcReadings.add(epc);
    }
    if (epcReadings.size() >= 1 && epcReadings.size() < 2 && isNetworkConnectionAvailable()) {
        network.getInfoItem(epcReadings.get(0), getInfoCallback);
    }
}
4

0 回答 0