Android不能在定时器中执行UI操作

文章讨论了在Android中使用TimerTask时,尝试在run方法内进行UI操作(如显示Toast)会抛出异常的情况。当isTimer为真时,直接在定时器任务中显示Toast会导致异常,而当isTimer为假时,操作则能正常执行。这表明定时器任务不应直接更新UI,应使用Handler或其他机制来处理UI交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

timer = new Timer("randomShelfUploadTimer");
TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
        isTimer = true;
        selectRandomShelfSQLiteDatabase(0);
        selectScanRecordAndUpload(0);
    }
};
if (isTimer) {//这样运行会抛出异常
    Toast.makeText(this, "有" + cursor.getCount() + "条数据正在上传中...", Toast.LENGTH_SHORT).show();//在定时器任务中不能显示Toast等UI操作
}
if (!isTimer) {//这样不会抛出异常
    Toast.makeText(this, "有" + cursor.getCount() + "条数据正在上传中...", Toast.LENGTH_SHORT).show();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值