android - 如何在android中进行无限循环?
问题描述
我想while(true)
在我的代码中创建一个,但是,当我运行时,我什么也没看到:我试过了,AsyncTask
但我认为无限循环太重了。
public class openActivity extends AppCompatActivity {
ArrayList<String> myArraylist = new Arraylist<> ();
CustomAdapter myAdapter;
ListView list;
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.myActivity);
list = findViewById(R.id.myList);
try {
while (true) {
Document doc = Jsoup.connect(myUrl).get;
//here i get info i need
//add that info to myArraylist
myAdapter = new CustomAdapter(this, myArraylist);
list.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
while (myArrayList.get(0).equals(myArraylist.get(0))) {
Thread.sleep(900000);
}
}
} catch (Exception ex) {
ex.getLocalizeMessage()
}
}
解决方案
您的循环阻塞了 UI 线程。要执行定期任务,您应该使用ScheduledExecutorService。
此外,避免在每次迭代时重新创建适配器。更新现有数据并使用DiffUtils通知更改。
推荐阅读
- javascript - 如何在类的元素上应用 javascript
- asp.net-core - $Metadata url 使用 Microsoft.AspNetCore.OData 8.0.0-rc2 返回 404
- html - 如何创建简单的持续缓慢移动的 CSS 图像滑块?
- terminal - cygwin 终端窗口中的标题/标题是如何生成/定义的?
- android - Linking.openURL 示例代码不适用于某些 Android 手机
- mongodb - Mongodb - 在迁移中更新具有> 100,000个文档的集合
- android - 为什么在为移动应用设计响应式布局时不考虑屏幕高度?
- python - valueError:在处理 json 文件时对关闭的文件进行 I/O 操作
- python - 如何在密码字段中放置条件?
- node.js - NestJs 不读取环境变量