我想使用C++ STL priority_queue容器适配器实现计时器排队系统.
我的问题是我偶尔会取消一个计时器,但没有接口可以让我轻松删除priority_queue中不是顶级项目的项目.
有什么建议?.
谢谢您的帮助.
我有一个应用程序,在程序开始时显示免责声明.我希望按钮在一段时间内保持不可见,然后变得可见.我设置了一个睡眠5秒的线程,然后尝试使按钮可见.但是,当我执行代码时出现此错误:
08-02 21:34:07.868:ERROR/AndroidRuntime(1401):android.view.ViewRoot $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图.
如何计算5秒,然后使按钮可见?谢谢.
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while(_active && (!_ok2)) {
sleep(100);
if(_active) {
waited += 100;
if(waited >= _splashTime)
{
turnButtonOn();
}
}
}
} catch(InterruptedException e) {
// do nothing
} finally {
finish();
startActivity(new Intent("com.lba.mixer.Choose"));
}
};
splashTread.start();
public static void turnButtonOn() {
okButton.setVisibility(View.VISIBLE);
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个体育应用程序,需要跟踪季度/半/周期的流逝时间.经过的时间需要精确到秒.即使用户通过按下电源按钮明确地将设备置于睡眠模式,游戏时钟也需要继续运行.
我第一次尝试使用Handler.postDelayed()来触发每200ms的时钟滴答和WindowManager.LayoutParms.FLAG_KEEP_SCREEN_ON,以确保屏幕超时不会停止"时钟".但我很快了解到,这是可以通过按下电源按钮手动把睡觉的装置来规避这种方法.此外,postDelayed()方法正在经历一些时钟漂移,显然是在run()方法中花费的时间的结果.实际数字仍然是准确的,但不是对齐,例如,在用户容易理解的5秒边界上 - 所涉及的定时器开始漂移,导致一些可理解的用户混淆.
经过一番研究后,我找到了使用服务,java定时器,AlarmManager和PartialWakeLock来实现定时器的技术.服务本身不能解决与设备进入睡眠状态相关的问题.Java定时器(如服务)无法解决设备进入休眠状态的问题.AlarmManager似乎是一个很好的方法,但我担心这不适合使用AlarmManager(即报警之间的间隔非常短).使用PartialWakeLock也看起来很有希望,但它本身并没有解决时钟漂移问题,我遇到了.
我将尝试组合AlarmManager和PartialWakeLock.我们的想法是,AlarmManager将有助于对抗时钟漂移和PartialWakeLock,以帮助保持代码简单(手指交叉).我希望这种方法能够在节能,代码复杂性和用户期望之间取得合理的平衡.任何意见是极大的赞赏.
谢谢,
丰富
嗨我已经陷入了一些与计时器相关的问题.希望有人可以帮忙..
Thread thread1 = new Thread(new ParameterizedThreadStart( execute2));
thread1.Start(externalFileParams);
Run Code Online (Sandbox Code Playgroud)
.
public void execute2(Object ob)
{
if (ob is ExternalFileParams)
{
if (boolean_variable== true)
executeMyMethod();//this also executes very well if condition is true
else
{
timer1.enabled = true;
timer1.start();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
5但是没有触发计时器的tick事件
我正在研究VS2008 3.5框架.我已经从工具箱拖动计时器并将其设置Interval为300也试图设置Enabledtrue/false方法timer1_Tick(Object sender , EventArgs e)但是它没有被解雇
任何人都可以建议我做错了什么?
我目前正在用C#编写一个应用程序,我需要大约启动一个计时器.每5毫秒.从一些研究看来,最好的方法是p /调用timeBeginPeriod(...)来改变系统计时器的分辨率.它在我的示例代码中运行良好.
我在此条目中发现了一条关于在Larry Osterman的MSDN博客上使用此功能的有趣警告:
Adam:调用timeBeginPeriod也可以提高GetTickCount的准确性.
使用timeBeginPeriod一般是一个非常糟糕的想法 - 我们一直在积极地删除它在Windows中的所有用途,因为使用它会带来功耗的后果.
有更好的方法可以确保您的线程及时运行.
有没有人确切知道为什么会发生这种情况,或者那些"更好的方式"(在线程中未指定)可能是什么?我们谈论的额外功耗是多少?
我的Android应用程序有问题.我需要一个应用程序,每10分钟将后台GPS位置发送到服务器(这里我有WCF服务工作).应用程序即使关闭也需要发送数据.所以我创建了一个服务(用于测试目的),它在服务器上发送给我时间.但当我插入我的代码以获取我的服务中的GPS位置时,一切都失败了(意外停止).
我已经知道你需要放一些接收器或其他东西,但到目前为止还没有任何工作.如果有人能帮助我,我会很高兴.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.biromatik.GPS"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="4" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".ETMGPSServiceActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name=".MyApplication" >
<service
android:enabled="true"
android:name=".MonitorService" >
</service>
<receiver
android:enabled="true"
android:name=".LocationReceiver" >
<intent-filter >
<action android:name="com.biromatik.intent.action.LOCATION" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在android中开发一个倒数计时器.在这个例子中,我输入了一个分钟作为参数,在倒数计时器中显示.
问题是,当我输入分钟时,例如65,那么计数器将是65:00.我希望计数器显示1:05:00,即HH:MM:SS格式.
public class MainActivity extends Activity implements OnClickListener {
private Button buttonStartTime, buttonStopTime;
private EditText edtTimerValue;
private TextView textViewShowTime; // will show the time
private CountDownTimer countDownTimer; // built in android class
// CountDownTimer
private long totalTimeCountInMilliseconds; // total count down time in
// milliseconds
private long timeBlinkInMilliseconds; // start time of start blinking
private boolean blink; // controls the blinking .. on and off
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 以下代码是一个众所周知的示例,用于显示调试版本和发布版本之间的区别:
using System;
using System.Threading;
public static class Program
{
public static void Main()
{
Timer t = new Timer(TimerCallback, null, 0, 2000);
Console.ReadLine();
}
private static void TimerCallback(Object o)
{
Console.WriteLine("In TimerCallback: " + DateTime.Now);
GC.Collect();
}
}
Run Code Online (Sandbox Code Playgroud)
如果使用调试配置运行此命令,则计时器将每两秒输出当前时间.这GC.Collect没有任何影响,因为编译器人为地延长了Timer t变量的寿命.在发布配置中,计时器只执行一次.该GC.Collect遗嘱垃圾收集t变量,就是这样.
一切都像它应该的那样.奇怪的是,当您将Console.ReadLine行更改为Console.ReadKey时,两个配置每两秒运行一次计时器.
Console.ReadKey和Console.ReadLine有什么区别?我从文档中了解到Console.ReadKey阻塞了发出ReadKey方法的线程.但是GC.Collect仍然会发射..
为什么Timer t通过阻塞主线程来延长生命周期?
使用.NET 3.5时,不会发生此行为!
我的应用程序中有一个计时器,每隔15秒启动一次AsyncTask.
Timer timer = new Timer();
public void AsynchTaskTimer() {
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new updateGPSTask().execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(timertask, 0, 15000); // execute in every 15sec
}
Run Code Online (Sandbox Code Playgroud)
这是从该onCreate()方法启动的.
当我调用另一个活动时,我需要取消这个计时器,timer.cancel()我onPause()在我的主要活动中使用我的方法.
现在,当我返回主要活动时,我需要重新启动计时器.我试图重新发起AsynchTaskTimer()的onRestart()方法,但我得到一个java.lang.IllegalStateException: Timer was canceled. …
要在5秒内使计时器到期,
这两者之间是否存在实际差异?
对于这种情况,是否有人优先考虑(性能,资源等)?
[备选方案1] deadline_timer:
boost::asio::deadline_timer timer(io_service);
timer.expires_from_now(boost::posix_time::seconds(5));
Run Code Online (Sandbox Code Playgroud)
[备选方案2] waitable_timer(system_timer或steady_timer):
boost::asio::system_timer timer(io_service);
timer.expires_from_now(std::chrono::seconds(5));
Run Code Online (Sandbox Code Playgroud)
PS:请专心比较deadline_timer对system_timer的,而不是system_timer对steady_timer.
timer ×10
android ×5
c# ×3
c++ ×2
boost ×1
boost-asio ×1
button ×1
clock ×1
console ×1
gps ×1
milliseconds ×1
persistent ×1
reliability ×1
service ×1
stl ×1
view ×1
winapi ×1