jjzjj

Timertask

全部标签

java - 为什么从无限循环切换到 TimerTask 会导致 CPU 使用率下降?

我写了一个守护进程,其结构如下:while(true){//dosomestuffThread.sleep(1000);}我注意到它使用了大量的CPU-高达100%。几个月来,我的生产服务器上有一个类似的守护进程,但出现了同样的CPU问题。昨天我重构了代码以使用TimerTask.我立即注意到我的开发箱上的CPU使用率下降了。所以我决定部署到生产环境并使用Munin仔细检查。以下是图表:几点:除了JVM之外,生产服务器上绝对没有运行任何其他东西。没有其他应用线程在运行它肯定是以正确的周期性间隔执行旧式代码-我总是在每次线程执行时写入日志。那么:为什么Thread.sleep与Timer

android - 几分钟后服务自动停止

我正在创建一个服务,该服务应该在Activity在后台以及整个应用程序被销毁时正常工作。我每隔1分钟调用服务中的位置坐标。但是,当我尝试这样做时,服务会在12-15分钟后自动关闭。我希望该服务无休止地工作,直到且除非它因用户交互Activity的完成而被破坏。我的服务类如下:publicclassSensorServiceextendsService{publicintcounter=0;publicstaticfinalintNINTY_SECONDS=90000;publicstaticBooleanisRunning=false;publicLocationManagermLoc

android - 在 timertask 中使用 toast

网上发现有人有类似问题here.这行不通:Timert=newTimer(false);t.schedule(newTimerTask(){@Overridepublicvoidrun(){Toast.makeText(getApplicationContext(),"msg",Toast.LENGTH_LONG).show();}},5000);但是,如果我在timertask之外实例化toast,然后在run中显示它,它就可以工作。我觉得可能跟所谓的UI线程有关,但究竟如何呢? 最佳答案 试试这个Timert=newTimer(

android - 使用 Service、TimerTask 和 BroadcastReceiver 检查各种更新

我正在尝试创建一个执行以下操作的简单程序:由我的Activity(UpdateServiceActivity)启动的服务(NewsService)检查新闻。如果找到新闻(NewsService),则向接收器(NewsReceiver)发送广播。收到广播后,接收器(NewsReceiver)应通知Activity(UpdateServiceActivity)有新闻。收到通知后,Activity(UpdateServiceActivity)获取消息并进行处理。到目前为止,我只是在处理一个简单的示例。到目前为止,这是我的代码:更新服务ActivitypublicclassUpdateServ

android - TimerTask 与 AlaramManager,我应该使用哪一个?

我正在开发一个应用程序,该应用程序在屏幕打开后每10分钟触发一次操作(比如toast消息),并在屏幕关闭后停止操作。为此,我使用了TimerTask。我应该开始使用AlaramManager而不是TimerTask还是继续使用TimerTask?我知道两者之间的区别,但不知道该使用哪个。 最佳答案 不能'同意nikis'的回答Timer和AlarmManager是满足不同需求的解决方案。计时器仍然是一个“任务”,这意味着这是您的应用程序的一个线程,这意味着您的应用程序的某些组件必须在设备上运行才能使计时器保持Activity状态。如

java - 从 TimerTask 的运行方法更新 TextView 时出错

我正在尝试测试UI和Timer类的可能性。所以我尝试了以下练习:===TestTimerActivity.java===packagecom.tvt.TestTimer;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.TextView;importjava.util.Timer;importjava.util.TimerTask;publicclassTestTimerActivityextendsActivity{TextView_tv;Timer_t;int_count=0;/**Cal

Android 错误 : "Could not create epoll instance", 或 "Could not create wake pipe"

我有一个Android应用程序,它使用计时器每5-10秒调用一次AsyncTask(使用java.util.Timer和java.util.TimerTask)。AsyncTask从AmazonAWSS3数据库获取图像数据,并为主UIActivity加载ImageView。这可以正常工作一两个小时,但随后我收到一条神秘的错误消息,应用程序被终止。错误消息来自“Looper”并指出:Couldnotcreateepollinstance.errno=24或Couldnotcreatewakepipe网络搜索似乎表明问题可能与文件描述符有关(打开的文件描述符太多?)。我查看了代码,但没有看

android - 如何在 AppWidgetProvider 中调用 onUpdate()?

这是我的代码...String[]show=newString[2];RemoteViewsremoteViews;publicstaticStringACTION_WIDGET_CONFIGURE="ConfigureWidget";publicstaticStringACTION_WIDGET_RECEIVER="ActionReceiverWidget";@OverridepublicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,int[]appWidgetIds){show=getString();re

java - 使用 IcyStreamMeta 从 SHOUTcast 获取元数据

我正在为Android编写一个从SHOUTcastmp3流中获取元数据的应用程序。我正在使用我在网上找到的一个非常漂亮的类(class),我稍微修改了一下,但我仍然有2个问题。1)我必须连续ping服务器以使用TimerTask更新元数据。我不喜欢这种方法,但这是我能想到的所有方法。2)我的应用程序运行时有一公吨的垃圾收集。删除TimerTask解决了垃圾收集问题,所以我不确定是我做错了还是正常。这是我正在使用的类:publicclassIcyStreamMeta{protectedURLstreamUrl;privateMapmetadata;privatebooleanisErro

Android:计划重复的 TimerTask 仅被触发一次

好吧,这是我遇到的一个非常奇怪的问题,我很确定我在某个地方搞砸了,但我不太清楚在哪里。我正在尝试的是-安排一个Timer每五​​秒执行一次TimerTaskTimerTask依次执行一个AsyncTask(在本例中,它简单地休眠了一秒钟,然后返回AsyncTask数量的静态计数)。最后,上述计数在UI中更新。当然,适当的Handler和Runnable已用于将来自其他线程的异步消息发布到UI。这段代码只执行一次。我希望它每5秒触发一次。这是代码。注意:我不知道如何使用Looper。经过反复试验,我把它放在那里了!publicclassTimerAsyncMixActivityexten