gpt4 book ai didi

c# - 如何在 Android 的 Mono 中使用 Runnable

转载 作者:可可西里 更新时间:2023-11-01 08:25:33 24 4
gpt4 key购买 nike

我正在尝试学习 Monodroid!我尝试将 Java 代码重新编写为 C#,但遇到了一些问题:我不明白如何使用 Runnable。这是 Java 中的代码片段,我无法将其转换为 C#:

public class RunActivity extends Activity implements OnClickListener
{
...

private Handler mHandler;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.run);
...
mHandler = new Handler();
mHandler.postDelayed(mUpdateGeneration, 1000);
}

private Runnable mUpdateGeneration = new Runnable()
{
public void run()
{
mAdapter.next();
mLifeGrid.setAdapter(mAdapter);

mHandler.postDelayed(mUpdateGeneration, 1000);
}
};
...

你能解释一下我必须如何编写这段代码并使用 Runnable 吗?此 Runnable 用于更新 gridview 适配器并在后台将数据从适配器加载到 gridview。如果我尝试在主线程中更新适配器?像这样(C# 代码):

mAdapter.next()
mLifeGrid.Adapter = mAdapter;
Thread.Sleep(1000);

事件卡住了。如果我不能使用 Runnable,我如何在新线程中实现适配器和 gridview 的更新?如果我使用 C# 线程,像这样:

...
Thread th = new Thread(new ThreadStart(mUpdatGeneration));
th.Start();
}
public void mUpdateGeneration()
{
mAdapter.next()
mLifeGrid.Adapter = mAdapter;
Thread.Sleep(1000);
}

它产生错误“System.NullReferenceException”

感谢大家的帮助!附言对不起我的英语:)

最佳答案

好像有an overload of PostDelayed() that takes an Action parameter , 所以直接的方法是做这样的事情:

void UpdateGeneration()
{
mAdapter.next();
mLifeGrid.setAdapter(mAdapter);
mHandler.PostDelayed(UpdateGeneration, 1000);
}

// ...

mHandler.PostDelayed(UpdateGeneration, 1000);

(免责声明:我从未真正使用过 MonoDroid,但它应该有效。)

关于c# - 如何在 Android 的 Mono 中使用 Runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14989040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com