无法弄清楚为什么处理程序线程不工作
Cannot figure out why handler thread is not working
我在学习处理程序线程时遇到了问题。它不工作。我用 postDelayed 延迟了 3 秒,还使用了 postAtTime,但 none 现在正在工作。 运行 选项卡中也没有错误或异常。
这是 java 代码。
package com.example.ims;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.ProgressBar;
import androidx.appcompat.app.AppCompatActivity;
public class SplashScreen extends AppCompatActivity {
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
init();
int interval = 3000;
new Handler(Looper.getMainLooper()).postAtTime(new Runnable(){
@Override
public void run() {
progressBar.setVisibility(View.VISIBLE);
}
},System.currentTimeMillis()+ interval);
}
void init()
{
progressBar = findViewById(R.id.progressbar);
progressBar.setVisibility(View.GONE);
}
@Override
protected void onStart() {
super.onStart();
}
}
此代码应在 3 秒后显示进度条,但它没有显示。
我浏览了这些链接,但是 none 帮助了我
Android threading and Handler not working
Handler Timer is not working
我也访问了其他一些链接。但是,显然所有人都认为处理程序线程应该在 onCreate() 方法中,但我的已经在 onCreate 方法中了。
要使用 postDelayed(),您必须这样做:
int interval = 3000;
new Handler(Looper.getMainLooper()).postDelayed(new Runnable(){
@Override
public void run() {
progressBar.setVisibility(View.VISIBLE);
}
},interval);
但要使用 postAtTime(),您必须使用 SystemClock.uptimeMillis() 而不是 System.currentTimeMillis()。因为 postAtTime() 的第二个参数得到的是正常运行时间毫秒而不是当前时间毫秒。
postAtTime() 文档说第二个参数:
“回调的绝对时间 运行,使用 {@link android.os.SystemClock#uptimeMillis} 时基”
我在学习处理程序线程时遇到了问题。它不工作。我用 postDelayed 延迟了 3 秒,还使用了 postAtTime,但 none 现在正在工作。 运行 选项卡中也没有错误或异常。
这是 java 代码。
package com.example.ims;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.ProgressBar;
import androidx.appcompat.app.AppCompatActivity;
public class SplashScreen extends AppCompatActivity {
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
init();
int interval = 3000;
new Handler(Looper.getMainLooper()).postAtTime(new Runnable(){
@Override
public void run() {
progressBar.setVisibility(View.VISIBLE);
}
},System.currentTimeMillis()+ interval);
}
void init()
{
progressBar = findViewById(R.id.progressbar);
progressBar.setVisibility(View.GONE);
}
@Override
protected void onStart() {
super.onStart();
}
}
此代码应在 3 秒后显示进度条,但它没有显示。
我浏览了这些链接,但是 none 帮助了我
Android threading and Handler not working
Handler Timer is not working
我也访问了其他一些链接。但是,显然所有人都认为处理程序线程应该在 onCreate() 方法中,但我的已经在 onCreate 方法中了。
要使用 postDelayed(),您必须这样做:
int interval = 3000;
new Handler(Looper.getMainLooper()).postDelayed(new Runnable(){
@Override
public void run() {
progressBar.setVisibility(View.VISIBLE);
}
},interval);
但要使用 postAtTime(),您必须使用 SystemClock.uptimeMillis() 而不是 System.currentTimeMillis()。因为 postAtTime() 的第二个参数得到的是正常运行时间毫秒而不是当前时间毫秒。
postAtTime() 文档说第二个参数:
“回调的绝对时间 运行,使用 {@link android.os.SystemClock#uptimeMillis} 时基”