0

所以我在我的 android 应用程序中有这些代码行,wifiScrollViewText是 String 类型,我设置为我想附加到 ViewText 的任何消息:wifiScrollViewText通过处理程序......readableNetmask在我的例子中是 255.255.255.0 ,readableIPAddress是 10.0。 0.11 ...如果我删除更新2,网络掩码将出现在文本视图上......但如果我添加更新2代码行,文本视图将显示IP两次而不是网络掩码然后IP地址。我认为解决方案是在启动第二个处理程序对象之前等待第一次更新完成!

// Update 1 
wifiScrollViewText = readableNetmask + "\n";
handler.post(new UpdateWiFiInfoTextViewRunnable());

// Update 2     
wifiScrollViewText = readableIPAddress + "\n";
handler.post(new UpdateWiFiInfoTextViewRunnable());

可运行:

static public class UpdateWiFiInfoTextViewRunnable implements Runnable {
    public void run() {
        wifi_info_textView.append(wifiScrollViewText);
    }
}
4

1 回答 1

1

Runnables在主线程上的当前消息/代码执行完成之前,这两个不会运行,因此当两者Runnables运行时,wifiScrollViewText变量指向相同的文本。您需要将两段文本保存在两个单独的变量中或列表中(如果您计划进行多次追加)并在一次运行中弹出它们Runnable

List<String> mUpdates = new ArrayList<String>();
// Update 1 
mUpdates.add(readableNetmask + "\n");
// Update 2     
mUpdates.add(readableIPAddress + "\n");
handler.post(new UpdateWiFiInfoTextViewRunnable());

在哪里:

static public class UpdateWiFiInfoTextViewRunnable implements Runnable {
    public void run() {
        for (int i = 0; i < mUpdates.size(); i++) {
            wifi_info_textView.append(mUpdates.get(i));
        }
        mUpdates.clear();
    }
}
于 2013-05-01T10:18:21.673 回答