标签:java android multithreading
我有这个代码:
MyClass tmp = new MyClass();
tmp.setParam1(1);
tmp.SetParam2("Test");
tmp.setParam3("Test");
...
然后我有
tmp.heavyCalc();
在这个重度计算操作期间,我必须更新UI中的进度条并向用户显示它正在使用更新进度条和一些要显示的文本.
现在它不起作用,因为我没有使用线程,app变得卡住和绞死,然后突然返回进度条是100%并且所有文本都突然出现.
所以我决定让我的函数作为新线程运行.
在我的类的内部定义中,我添加了实现Runnable
所以
public class MyClass implements Runnable{
然后我把heavyCalc()函数调用为我创建的new Run()函数:
@Override
public void Run()
{
heavyCalc();
}
现在我这样做:
Thread thread = new Thread(tmp);
tmp.run();
它工作,但在UI中仍然没有任何变化,应用程序卡住了,然后突然进度条100%和应用程序返回.
我错过了什么?
解决方法:
我建议你使用AsyncTask
.它的目的与你想要做的完全一致.它允许您运行后台操作,然后使用此类操作的结果更新UI.
标签:java,android,multithreading 来源: https://codeday.me/bug/20190711/1437066.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。