- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已经查看了我可以找到的所有讨论和线程,但事实并非如此。我有一个简单的计时器来更新 TextView (下面示例中的 mTimeTextField)。 mUpdateTimeTask 运行方法正在正确执行(每秒),但 UI/文本字段未更新。
我有基于此处找到的信息的代码:
http://android-developers.blogspot.com/2007/11/stitch-in-time.html http://developer.android.com/resources/articles/timed-ui-updates.html
代码如下:
package com.something.handlertest;
import com.something.handlertest.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Test extends Activity {
private Handler mHandler = new Handler();
private int labelNo = 0;
private long currTime = 0L;
private long mStartTime = 0L;
TextView mTimeTextField;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTimeTextField = (TextView)findViewById(R.id.timeTextFieldl);
Button startButton = (Button)findViewById(R.id.start_button);
startButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mStartTime == 0L) {
mStartTime = System.currentTimeMillis();
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 100);
}
}
});
}
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
final long start = mStartTime;
//long millis = SystemClock.uptimeMillis() - start;
long millis = SystemClock.uptimeMillis();
int seconds = (int) (millis / 1000);
int minutes = seconds / 60;
seconds = seconds % 60;
//setContentView(mTimeTextField); This will blow up if I use it
if (seconds < 10) {
mTimeTextField.setText("" + minutes + ":0" + seconds);
} else {
mTimeTextField.setText("" + minutes + ":" + seconds);
}
//mHandler.postAtTime(this,
// start + (((minutes * 60) + seconds + 1) * 1000));
mHandler.postAtTime(this, 1000);
}
};
}
根据一些建议,我尝试添加:
setContentView(mTimeLabel);
但这会崩溃提示 View 没有父级。仅供引用,我确实有一个:
setContentView(R.layout.main);
调用我的onCreate()
。
最佳答案
替换
mHandler.postAtTime(this, 1000);
与
mHandler.postDelayed(this, 1000);
关于android - 使用 Runnable 和 postDelayed 更新 UI 不适用于计时器应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765161/
我正在尝试为一个应用程序循环播放一个简短的动画,我在许多网站和论坛中找到了这个解决方案或其中的几个。然而,首席开发人员告诉我这段代码最终会使应用程序崩溃,我应该改用线程。谁能详细解释一下为什么这段代码
根据Handler.postDelayed(Runnable r, long delayMillis)的文档: Causes the Runnable r to be added to the mes
我试图实现一个循环Runnable。我发现的示例似乎使用以下想法来启动可运行的。 handler = new Handler(); final Runnable r =
对于这种使用“handler.posDelayed”的类型,我没有看到真正的答案。 因此,我使用 for 循环多次执行“handler.posDelayed”。问题是,当我离开 Activity 并重
我遇到错误:无法解析符号“postDelayed”。在: handler.postDelayed(updateCurrentTime, 500); 这是我的一些代码: package com.exam
我有一个情况,我创建了一个按钮和一个像这样的函数。 ... public void BtnOnClick(View view) { displayMsg(); } ... private vo
如何将用户字符串拉入处理程序timer.postDelayed? public class Quotes extends Activity implements OnClickListener {
我需要的是当 competition.isTimerStarted 变成 false 这个 runnable 应该启动 buttonsProcedure() 一次然后自己停止但这并没有发生 - but
谁能看出这不起作用的任何原因? override fun resetAnimations() { Log.d("MainActivity", "start") Handler().p
我正在查看 postDelayed 的 Android 文档 post delayed documentation 这类似于另一个问题 - https://stackoverflow.com/ques
我正在尝试在一段时间后自行重启服务。我的代码看起来像这样(在 onStartCommand(...) 内) Looper.prepare(); Handler handler = new Handle
我正在尝试为我的应用制作启动画面。我使用了 postDelayed 方法。这是我的代码: public class SplashScreenActivity extends Activity {
我正在使用 handler.postDelayed 方法为某些动画内容创建一些延迟。 我正在使用 Mediaplayer 播放一些歌曲。用户可以通过单击下一步退出此操作类。但是在下一个屏幕上,即使我在
我正在使用此代码播放声音 final MediaPlayer mp = MediaPlayer.create(this, R.raw.sound); mp.setOnComp
我正在尝试更改 handler.postDelay() 中处理程序的延迟,但在这里它只工作一次然后停止。关键的方法在最后。我在想如何使可运行程序在 postDelay() 循环中工作。 class M
我有一个简单的秒表代码 fragment 。线程在自定义类中运行,它通过接口(interface)连接到主 Activity public class MainActivity extends App
在我的应用程序中,我使用具有多个可运行对象的处理程序。为了调用这些可运行对象,我循环 postDelayed,以便它们充当计时器。我意识到随着时间的推移,这会生成一个巨大的堆(10mb,并且还在不断增
我有一个监听蓝牙串行数据的线程。 我有一个将数据传递到 ui 线程的方法,名为:sendData(byte[] buffer),它将数据完美地发送到 UI 线程,这可能会导致它在以下情况下变得非常慢:
这是我的代码,但理论上它应该每秒发布此日志消息直到永远,但事实并非如此。有任何想法吗?我的目标是让它永远运行,但 while 循环也不起作用。 import android.app.Activity;
我想为 WebView 动态设置自动滚动速度。在 onCreate 中调用 autoScroll(25) 并将其删除,接下来调用 autoScroll(300) 但是当 apk 运行时自动滚动速度为
我是一名优秀的程序员,十分优秀!