博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xamarin.Android 使用线程无法更改页面文本问题
阅读量:5360 次
发布时间:2019-06-15

本文共 3819 字,大约阅读时间需要 12 分钟。

前言:

  刚接触Xamarin.Android不到一个月时间,却被他折磨的不要不要的,随着开发会出现莫名其妙的问题,网上类似Xamarin.Android的文档也不多,于是本片文章是按照Java开发Android的思路写过来的,于是记录下来,希望大家碰到这个问题少走些弯路。

问题描述:

  在执行线程内想给TextView赋值发生错误。 

错误提示:

  Android.Util.AndroidRuntimeException: Only the original thread that created a view hierarchy can touch its views.

问题原因:

  原来Android中相关的view和控件不是线程安全的,我们必须单独做处理。这里借此引出Handler的使用。

Handler的机制:

  handler机制,在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知。

Handler的作用:

  当我们需要在子线程处理耗时的操作(例如访问网络,数据库的操作),而当耗时的操作完成后,需要更新UI,这就需要使用Handler来处理,因为子线程不能做更新UI的操作。Handler能帮我们很容易的把任务(在子线程处理)切换回它所在的线程。简单理解,Handler就是解决线程和线程之间的通信的。

原有错误代码:

using System;using Android.App;using Android.Content;using Android.Runtime;using Android.Views;using Android.Widget;using Android.OS;using System.Threading;namespace App1{    [Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon")]    public class MainActivity : Activity    {         TextView tv1;        protected override void OnCreate(Bundle bundle)        {            base.OnCreate(bundle);             SetContentView(Resource.Layout.Main);             Button button = FindViewById

修改完成后的代码:

using System;using Android.App;using Android.Content;using Android.Runtime;using Android.Views;using Android.Widget;using Android.OS;using System.Threading;namespace App1{    [Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon")]    public class MainActivity : Activity    {         TextView tv1;        Handler hander;        protected override void OnCreate(Bundle bundle)        {            base.OnCreate(bundle);             SetContentView(Resource.Layout.Main);             Button button = FindViewById

这样问题就完美的解决了。

 

转载于:https://www.cnblogs.com/swjian/p/8652816.html

你可能感兴趣的文章
BZOJ.4650.[NOI2016]优秀的拆分(后缀数组 思路)
查看>>
IPMI学习资料
查看>>
CODE[VS] 1497 取余运算
查看>>
5210: 最大连通子块和 动态DP 树链剖分
查看>>
redis 安装 yum install gcc tcl
查看>>
序时薄二次开发(新增按钮)
查看>>
PHP实现根据浏览器跳转不同语言页面代码
查看>>
四、XML语言学习(1)
查看>>
无线网络发射选址
查看>>
unix系统编程小结(一)------文件I/O
查看>>
一些算法的了解
查看>>
Leetcode: House Robber II
查看>>
Log4j自定义Appender
查看>>
C++字符串复制函数StrCpy算法设计(一)
查看>>
PAT_B_1078 字符串压缩与解压
查看>>
洛谷 P1303 A*B Problem
查看>>
创建函数还有一种方法
查看>>
返回绝对值--Math.Abs 方法
查看>>
教你控制 RecyclerView 滑动的节奏
查看>>
冲刺周2
查看>>