java – 带有部分唤醒锁的背景中重复线程的android服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 带有部分唤醒锁的背景中重复线程的android服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2596字,纯文字阅读大概需要4分钟。
内容图文
![java – 带有部分唤醒锁的背景中重复线程的android服务](/upload/InfoBanner/zyjiaocheng/792/eb200d32f25549a29712dfcf3dca80ca.jpg)
我有一个运行在应用程序服务中的线程,该应用程序从之前使用webview登录的页面中读取数据.该线程工作正常.
现在我想定期重复这个帖子,比如说一分钟,即使手机处于睡眠/屏幕关??闭状态.我知道我可能不得不用wake_lock来解决它,但我不知道如何.
我这里有3个问题.我尝试用while(true)sleep(60000)重复该线程….但是在手机屏幕关闭后停止线程.有没有更好的办法?
然后我还想将字符串数量与零进行比较.如果字符串计数大于零,则表示xxx.
任何帮助非常感谢!
Thread downloadThread = new Thread() {
public void run() {
Document doc;
doc = null;
try {
final String url = "https://xxx.xxx.xx";
// -- Android Cookie part here --
CookieSyncManager.getInstance().sync();
CookieManager cm = CookieManager.getInstance();
String cookie = cm.getCookie(url);
// Jsoup uses cookies as "name/value pairs"
doc = Jsoup.connect("https://xxx.xxx.xx").cookie(url, cookie).get();
Elements elements = doc.select("span.tabCount");
String count = elements.first().text();
Log.d(TAG, "wart"+(count));
Log.d(TAG, "wartcookiedate:"+(cookie));
} catch (IOException e) {
e.printStackTrace();
}
}
};
downloadThread.start();
这是我第二次尝试下面的代码.当用户已经登录时,它可以完美地工作.我现在的问题是,在应用程序启动时,字符串“count”将返回null,因为用户尚未登录.因此会抛出一个异常,它会停止整个计划的Task Executor.如果“count”为空,有没有办法重新启动它?
scheduleTaskExecutor= Executors.newScheduledThreadPool(5);
// This schedule a task to run every 10 seconds:
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
Document doc;
doc = null;
try {
final String url = "https://xxx.xxx.xx";
// -- Android Cookie part here --
CookieSyncManager.getInstance().sync();
CookieManager cm = CookieManager.getInstance();
String cookie = cm.getCookie(url); // returns cookie for url
// Jsoup uses cookies as "name/value pairs"
doc = Jsoup.connect("https://xxx.xxx.xx").cookie(url, cookie).get();
Elements elements = doc.select("span.tabCount");
String count = elements.first().text();
Log.d(TAG, "wart"+(count));
Log.d(TAG, "wartcookiedate:"+(cookie));
} catch (IOException e) {
e.printStackTrace();
}
}
}, 0, 10, TimeUnit.SECONDS);
解决方法:
不要使用带有while sleep的显式线程来模拟计时器.这是丑陋和不必要的.有更优雅的方式可以自动安排每x个时间单位的任务,如ScheduledThreadPoolExecutor.
内容总结
以上是互联网集市为您收集整理的java – 带有部分唤醒锁的背景中重复线程的android服务全部内容,希望文章能够帮你解决java – 带有部分唤醒锁的背景中重复线程的android服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。