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

被折叠的 条评论
为什么被折叠?



