gpt4 book ai didi

java - 具有部分唤醒锁的后台重复线程的android服务

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:50 26 4
gpt4 key购买 nike

我有一个线程在应用程序的服务中运行,该线程从之前使用 webview 登录的页面中读取数据。该线程工作正常。

现在我想定期重复这个话题,比如一分钟一次,即使手机处于 sleep 状态/屏幕关闭时也是如此。我知道我可能不得不使用 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,因为用户尚未登录。因此将抛出异常,停止整个计划的任务执行器。如果“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服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517769/

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