Android 无法找出处理程序线程不工作的原因
我在学习处理程序线程时遇到了一个问题。它不起作用了。我用postDelayed给出了3秒的延迟,也使用了postAtTime,但现在没有一个可用。运行选项卡中也没有EEOR或异常 下面是java代码Android 无法找出处理程序线程不工作的原因,android,multithreading,handler,runnable,Android,Multithreading,Handler,Runnable,我在学习处理程序线程时遇到了一个问题。它不起作用了。我用postDelayed给出了3秒的延迟,也使用了postAtTime,但现在没有一个可用。运行选项卡中也没有EEOR或异常 下面是java代码 package com.example.ims; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.view.View; import android.widg
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秒后显示progressbar,但它没有显示
我已经浏览了这些链接,但没有一个对我有帮助
我也访问了一些其他链接。但是,显然所有人都认为处理程序线程应该在onCreate()方法中,而我的线程已经在onCreate方法中。要使用postDelayed(),必须执行以下操作:
int interval = 3000;
new Handler(Looper.getMainLooper()).postDelayed(new Runnable(){
@Override
public void run() {
progressBar.setVisibility(View.VISIBLE);
}
},interval);
但是要使用posttime(),必须使用SystemClock.uptimeMillis()而不是System.currentTimeMillis()。因为posttime()的第二个参数获取正常运行时间毫秒,而不是当前时间毫秒 posttime()doc关于它的第二个参数:
“使用{@link android.os.SystemClock#uptimeMillis}时基运行回调的绝对时间”它正在工作。但是,邮递时间有什么问题?我想弄明白。使用SystemClock.uptimeMillis()代替System.currentTimeMillis()。可以。是的,它现在可以与SystemClock.uptimeMillis()一起工作。谢谢,不客气。我正在编辑我的答案。