android 主线程 与 handler,Android,Handler是在主线程还是其他线程中运行?

本文分析了一段Android代码,该代码用于实现启动屏幕(SplashScreen)。当活动首次创建时,它全屏显示并设置了一个延迟,之后在主线程中启动MainMenu活动。尽管延迟超过了5秒,但没有引发ANR(应用无响应)错误。这是因为启动新活动的操作是在主线程中进行的,而延迟处理的是UI更新,不会阻塞主线程。
摘要由CSDN通过智能技术生成

我有以下代码.

public class SplashScreen extends Activity {

private int _splashTime = 5000;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.splash);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

new Handler().postDelayed(new Thread(){

@Override

public void run(){

Intent mainMenu = new Intent(SplashScreen.this, MainMenu.class);

SplashScreen.this.startActivity(mainMenu);

SplashScreen.this.finish();

overridePendingTransition(R.drawable.fadein, R.drawable.fadeout);

}

}, _splashTime);

}

}

我在分析这段代码时遇到了问题.至于知道处理程序在主线程中运行.但它有在其他线程中运行的线程.

MainMenu.class将在主线程或第二个线程中运行?

如果主线程停止5秒,ANR将被提升.为什么我延迟停止它(_splashTime)ANR不显示(即使我将它增加到超过5秒)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值