将线程转换为Android

时间:2016-12-27 07:43:16

标签: android multithreading asynchronous android-asynctask java-threads

我的UI中有一个产品列表及其各自的值。

Product1 --- 10
Product2 --- 12
. . . . . . . . and so on

。 可以单击每一行并打开一个新的自定义对话框界面,用户可以在其中更改值并设置新值。问题是当我更改值并关闭对话框时,值不会在行中更新。我必须打开对话框并再次关闭它然后它会更新。它总是更新"之前的"值。例如,如果我将Product1从10-12更改为然后再次打开对话框并将其更改为13,则会更新为" 12"。我在一个单独的实用程序方法中使用了一个线程。我想将我的Thread实现转换为异步任务,并在onPostExecute的后台使用它。我怎样才能做到这一点?

 static void saveMutation(final String productId,
                             final int mutationAmount,
                             final boolean isOpeningStock,
                             final String flightKey,
                             final FlightLegIdentifier fli,
                             final String crew, final String tabletId,
                             final AirFiApplication airFiApplication) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                StockMutation mutation = new StockMutation();
                mutation.setOpeningStock(isOpeningStock);
                mutation.setFlightKey(flightKey);
                mutation.setFli(fli);
                mutation.setProductId(productId);
                mutation.setCrew(crew);
                mutation.setMutationId(String.valueOf(UUID.randomUUID()));
                mutation.setTabletId(tabletId);
                mutation.setMutationAmount(mutationAmount);
                StockMutationDao dao = new StockMutationDao(SHARD_DB);
                dao.createOrUpdate(mutation);
                StockUtils.adjustStock(flightKey, fli, airFiApplication);
                StockUtils.setIsStockChanged(true);
            }
        }).start();
    }

1 个答案:

答案 0 :(得分:0)

问题是UI只能在UI(主)线程上更新。您可以使用Handler或runOnUIThread()从非UI线程更新UI线程。 你可以在google上找到很多资源。