什么是java和android中C++Sleep()的最佳替代方案
what is best alternative of C++ Sleep() in java and android?
我基本上是一名C++开发人员,但最近转到了Android。我的问题是,java中C++(Windows)Sleep()函数的最佳替代方案是什么?我只需要在android(java)中执行程序时有一个简单的延迟,然后在for循环的每次迭代中恢复它。但是当我在java中使用Thread.sleep()时,它会对android系统造成某种挂起,并且无法按预期工作。希望你能理解我的问题和要求。请建议一种更好的方法来获得java中的C++Sleep()功能。
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.STROKE);
Path path = new Path();
path.moveTo(myPath[0].x, myPath[0].y);
for (int i = 1; i < myPath.length; i++) {
path.lineTo(myPath[i].x, myPath[i].y);
canvas.drawPath(path, paint);try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这是我的代码。我想在延迟1秒后看到每条路径线的绘制,这样我就可以看到该绘制。但它的确切作用是暂停应用程序1秒,然后立即绘制完整的。
你的应用程序挂起是因为你暂停了主线程,而主线程永远不应该暂停。在单独的线程上运行代码,例如:
Thread d = new Thread() {
@Override
public void run() { /* code, you can use Thread.sleep() here */ }
};
d.start();
如果您想在应用程序中强制暂停,请使用Thread.sleep()
try {
Thread.sleep(3000); // 3 seconds (in milliseconds)
} catch(Exception ex) {
}
这不应该导致应用程序延迟。。。但是是的,停顿一下
如果我理解得很好,你想要的是唤醒过程的可能性,为此使用Object.wait()
。
Object myObject = // this can be any object (activity) you have
synchronized (myObject) {
myObject.wait();
}
但你需要更多的代码和你想在应用程序中执行的情况,才能给出更准确的答案。。。
java.lang.Thread.sleep(long-millis)方法会导致当前执行的线程睡眠指定的毫秒数,具体取决于系统计时器和调度器的精度和准确性。
try {
// thread to sleep for 1000 milliseconds
Thread.sleep(1000);
} catch (Exception e) {
System.out.println(e);
}
如果您希望某个进程在UI线程外运行,请尝试以下操作。。
int delay = 500;
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
// your code
}
}, delay);
我不了解android,但在任何GUI框架中解决问题的方法基本相同。
您不想让绘制对象花费时间,因为在绘制对象时,您的应用程序将没有响应。此外,GUI框架可能会缓冲绘图调用的结果,因此出现新行的速率可能与进行调用的速率不同。
你想做的是动画你的对象:给你的对象一个状态变量,说明已经画了多少线,然后改变onDraw()方法来画那么多线。然后安排一个计时器事件来改变状态,并定期触发重新绘制。
您还可以使用CountDownTimer并实现自己的暂停类。它是线程安全和安卓专属。
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 解决难题(最佳解决方案)
- 比较/搜索数组中多个整数的最佳解决方案
- 找出迷宫求解器的最佳解决方案,并具有动画输出
- 从QTcpSocket上的数据流中连续运行复杂算法的最佳Qt线程解决方案是什么
- CPLEX 如何以相同的成本获得所有不同的最佳解决方案
- 我该如何判断k-server动态解决方案的最佳路径以数组成本[i] [j] [k] [t]位于何处
- 我在这里滥用继承权吗?什么是最佳实践替代方案/模式?
- 暂停和恢复线程的最佳解决方案是什么?
- std::optional 的最佳替代方案是从方法返回可选值?(使用 C++98/C++11/C++14)
- 作用域 Pre C++11 的最佳替代方案
- 需要包含运行任务时间的 2D 矩阵的最佳解决方案
- 什么是python dictionary和zip的最佳C++替代方案
- 清除一个字符数组的最佳方案-是否为memset
- 为什么通过系统("color YX")更改控制台应用程序中C++颜色不是最佳解决方案?
- 查找内存泄漏的最佳解决方案
- 在c++中绘制(原语,线条等)的最佳通用跨平台解决方案
- 黑客攻击线程安全是"最佳"行动方案吗?
- LTO优化负面影响并找到最佳解决方案