为什么我的刷新在几秒钟后比开始后立即慢
Why my refreshing is slower after few secounds than immediately after start
我是 android 的初学者,我正在做我的测试项目。当我启动 Handler 方法时遇到这样的问题,然后假设大约需要刷新。但是几秒后,这比开始时慢,点击 startGameButton
嵌套了两个处理程序来刷新屏幕。
以下代码嵌套在onCreate()方法中
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
MainLoopClass mainLoop;
mainLoop=newMainLoopClass(HelperMethods.context,HelperMethods.rl);
handler.postDelayed(this, 100);
}
};
...
startGameButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.postDelayed(runnable, 100);
}
});
我想要的效果是每 700 毫秒刷新一次
看来你的代码有性能副作用
更好地解决您的问题是
1. 在你的 app:gradle
中添加 RxJava
android {
...
}
dependencies {
...
implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
...
}
添加
val disposable = Observable.interval(700, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
//refresh your UI here
}
PS:
- 如果在 MainThread 中调用 subscribe
.observeOn(AndroidSchedulers.mainThread())
没有必要
- 当您想停止更新 UI 时(例如在 onStop 中)- 调用 disposable.dispose()
我是 android 的初学者,我正在做我的测试项目。当我启动 Handler 方法时遇到这样的问题,然后假设大约需要刷新。但是几秒后,这比开始时慢,点击 startGameButton
嵌套了两个处理程序来刷新屏幕。
以下代码嵌套在onCreate()方法中
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
MainLoopClass mainLoop;
mainLoop=newMainLoopClass(HelperMethods.context,HelperMethods.rl);
handler.postDelayed(this, 100);
}
};
...
startGameButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.postDelayed(runnable, 100);
}
});
我想要的效果是每 700 毫秒刷新一次
看来你的代码有性能副作用 更好地解决您的问题是 1. 在你的 app:gradle
中添加 RxJavaandroid {
...
}
dependencies {
...
implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
...
}
添加
val disposable = Observable.interval(700, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
//refresh your UI here
}
PS:
- 如果在 MainThread 中调用 subscribe
.observeOn(AndroidSchedulers.mainThread())
没有必要
- 当您想停止更新 UI 时(例如在 onStop 中)- 调用 disposable.dispose()