当前位置: 首页 > news >正文

如何查询网站接入信息2021国内最好用免费建站系统

如何查询网站接入信息,2021国内最好用免费建站系统,关于做膳食的一些网站,wordpress微博样式评论点击上方“dotNET全栈开发”#xff0c;“设为星标”加“星标★”#xff0c;每天11.50#xff0c;好文必达全文约4000字#xff0c;预计阅读时间8分钟当初有同事就碰到类似的问题#xff0c;于是就总结了一些#xff0c;那时写这篇文章是我还在第一家公司。今天有人提到… 点击上方“dotNET全栈开发”“设为星标”加“星标★”每天11.50好文必达全文约4000字预计阅读时间8分钟当初有同事就碰到类似的问题于是就总结了一些那时写这篇文章是我还在第一家公司。今天有人提到之前在csdn发布过我就重新修改了一下发到微信。两年过去了过去的同事不再交流问题但问题仍然出现交流的人换了几波有些同事换了方向而我仍在坚持xamarin。是难得还是无奈我也不知道。反正奥力给干就完事了文中的图已经掉该错过就错过吧见谅01主线程也叫UI线程当一个程序启动的时候系统自动创建一个主线程在这个主线程中你的应用app、winform等客户端程序和UI组件发生交互负责处理UI组件的各种事件所以主线程也叫UI线程。02UI组件的更新一定要在UI线程里android为了线程安全不允许在UI线程外的子线程操作UI这个结论不仅仅是说android这个概念同样适用于其他的客户端系统它 的好处时提高客户端UI的用户体验和执行效率稍后解释防止线程阻塞。在Java 原生的android中有两种方式更新UI线程handler消息传递机制更新UI线程AsyncTask异步任务更新UI线程AsyncTask是Android提供的一个轻量级的用于处理异步任务的类类似于C#中的Task03永远不要阻塞UI线程刚刚说了UI组件的更新一定要在UI线程中当我们在主线程中发起请求请求的执行http请求耗时请求完成填充数据更新UI组件。这一过程一旦超过了10秒钟就会抛出ANR异常Application Not Responding应用程序员不响应所以网络请求耗时的操作大多使用异步操作早起异步Task相对麻烦在.net 4.5中增加了新的特性await/async,使用await/async 就简化了很多。原则上的要求就是永远不要阻塞UI线程。我们通过下面几个简单的示例逐步地学西和掌握如何在子线程中更新UI线程ANR异常使用RunOnUIThread更新UI线程异步加载图片在子线程中更新UI线程044.1 阻塞UI线程并输入事件-模拟ANR异常下面我们创建一个简单的登录程序登录的时候使用Thread.Sleep(10000模拟耗时10秒钟在这10秒钟内程序没有任何响应如果你做了输入事件比如触摸屏幕按返回键通俗说法就是卡界面了。代码如下主要是了解ANR异常。 [Activity(Label LoginActivity, MainLauncher true)] public class LoginActivity : Activity { private EditText et_name; private EditText et_pwd; private Button btn; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Login); et_name FindViewByIdEditText(Resource.Id.et_name); et_pwd FindViewByIdEditText(Resource.Id.et_pwd); btn FindViewByIdButton(Resource.Id.btn); btn.Click (s, e) { Client.Client_Login(et_name.Text, et_pwd.Text, () { Toast.MakeText(this, 登录成功, ToastLength.Long).Show(); }, error { Toast.MakeText(this, error, ToastLength.Long).Show(); }); }; } } public class Client { /// param namesuccessAction登录成功的回调/param /// param nameerrorAction登录失败的回调/param public static void Client_Login(string name, string pwd,Action successAction,Actionstring errorAction) { Thread.Sleep(6000); if (name 123 pwd 123) { successAction(); return; } errorAction(密码不正确); } }4.2 ANR异常是如何产生的ANRApplication Not Responding的缩写当程序爆出“应用程序无响应”系统会向用户显示一个对话框“等待”可以让程序继续运行“强制关闭”直接kill掉了。这是值得注意的一点记得上学的时候用的是酷派虽然是充话费送的但其实那手机配置还是可以但是用就久了很卡打开一些app长时间没有反应我便在屏幕上点、按返回键等于是就经常报这个“**程序没有响应”“等待”“退出”的一个对话框好吧其实用酷派手机卡了这些无关紧要。在android程序中程序的响应时由Activity manager和WindowManager系统服务监听的主要是由以下两种情况造成的在5秒外没有响应UI事件点击屏幕点击按钮按返回键等反之在5秒内比如Thread.sleep(5000)去点击屏幕按返回键也不会报出ANR异常的。BroadcaseReceiver在10秒内没有执行完毕产生上面两种情况原因比较多要注意的是即时是在UI线程中做了耗时的事情5秒以上如果用户没有触发屏幕的任何的事件这时虽然UI线程阻塞了也不会产生ANR。其实避免ANR异常原则要求还是那句话”不要再UI线程上做耗时的事情”05使用RunOnUIThread更新UI线程大家一定使用过TimerTimer对象会开启多个线程但最少不止一个。下面这个例子将演示两个timer1秒钟更新一次对比一下两个TextView的显示的时间。 [Activity(Label Xamarin_android, MainLauncher true, Icon drawable/icon)] public class TimerActivity : Activity { private TextView tv_test; private TextView tv_test1; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); tv_test FindViewByIdTextView(Resource.Id.tv_test); tv_test1 FindViewByIdTextView(Resource.Id.tv_test1); tv_test.Text 现在的时间是 DateTime.Now.ToString(yyyy年MM月dd日 HH:mm:ss); tv_test1.Text 现在的时间是 DateTime.Now.ToString(yyyy年MM月dd日 HH:mm:ss); System.Diagnostics.Debug.Write(主线程Thread.CurrentThread.ManagedThreadId); System.Timers.Timer timer new System.Timers.Timer(10000); timer.Elapsed delegate { System.Diagnostics.Debug.Write(timer线程Thread.CurrentThread.ManagedThreadId); RunOnUiThread(() { tv_test.Text 现在的时间是 DateTime.Now.ToString(yyyy年MM月dd日 HH:mm:ss); }); }; timer.Enabled true; System.Diagnostics.Debug.Write(主线程 Thread.CurrentThread.ManagedThreadId); System.Timers.Timer timer1 new System.Timers.Timer(10000); timer1.Elapsed delegate { System.Diagnostics.Debug.Write(timer1线程 Thread.CurrentThread.ManagedThreadId); tv_test1.Text 现在的时间是 DateTime.Now.ToString(yyyy年MM月dd日 HH:mm:ss); }; timer1.Enabled true; } }通过这段代码说明两个问题1.timer会开启至少一个线程2.tv_test的时间是1秒更新一次tv_test1的时间不会更新在子线程中无法直接更新UI。xamarin android中子线程更新UI线程的方法就是RunOnUIThread,该方法参数是一个无参无返回值的委托。06异步加载图片在子线程中更新UI线程我们已经知道子线程中更新UI的使用方法是RunOnUIThread ,下面这个例子使用异步加载图片异步的重点是开启子线程。关于http请求的库microsoft封装的库在命名空间System.NET.Http,这里演示的是第三方的http请求库RestSharp你可以在nuget上添加引用。 [Activity(Label Xamarin_android, MainLauncher true, Icon drawable/icon)] public class AsyncLoadImageActivity : Activity { private ImageView img; private Button btn; private TextView tv_result; private Bitmap bitmap; private Button btn_test; private int noBlock_number; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.AsyncLoadImage); btn FindViewByIdButton(Resource.Id.btn); img FindViewByIdImageView(Resource.Id.img); tv_result FindViewByIdTextView(Resource.Id.tv_result); btn_test FindViewByIdButton(Resource.Id.btn_noBlockTest); btn_test.Click (s, e) { noBlock_number; btn_test.Text 点击了 noBlock_number次; }; System.Diagnostics.Debug.Write(UI线程ID:Thread.CurrentThread.ManagedThreadId); const string url https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/w%3D268%3Bg%3D0/sign0003b03088b1cb133e693b15e56f3173/0bd162d9f2d3572c257447038f13632763d0c35f.jpg; btn.Click (s, e) { System.Diagnostics.Stopwatch sw new System.Diagnostics.Stopwatch(); sw.Start(); GetStreamAsync(url,()RunOnUiThread(() { System.Diagnostics.Debug.Write(异步线程ID: Thread.CurrentThread.ManagedThreadId); sw.Stop(); double seconds sw.Elapsed.TotalSeconds; tv_result.Text 加载图片使用了 seconds 秒; img.SetImageBitmap(bitmap); }), error RunOnUiThread(() { tv_result.Text error; })); }; } /// param namesuccessAction获取图片成功回调方法/param /// param nameerrorAction获取失败回调方法/param public void GetStreamAsync(string url,Action successAction,Actionstring errorAction) { try { RestClient client new RestClient(url); RestRequest request new RestRequest(); var result client.GetAsync(request,(response,handler) { if (response.StatusCode 0) { errorAction(网络状况差,请稍后再试); return; } if(response.StatusCode System.Net.HttpStatusCode.OK) { var bytes response.RawBytes; MemoryStream stream new MemoryStream(bytes); bitmap BitmapFactory.DecodeStream(stream); successAction(); } }); } catch (Exception ex) { System.Diagnostics.Debug.Write(ex.StackTrace); errorAction(ex.ToString()); } } }从运行的结果我们可以看到UI线程ID和异步方法中的回调方法子线程ID不一样使用异步方法不会阻塞UI线程执行耗时请求图片方法时任然可以点击按钮输入其他的事件。推荐阅读工具程序员必装的10款谷歌插件技巧14个实用的 数据库设计技巧原创程序员我终于知道post和get的区别面试面试官你连RESTful都不知道我怎么敢要你热议年底300人被裁感受互联网民工讨薪的心路历程转载程序员改完这9段屎一样的代码还挺香技巧99%的人不知道搜索引擎的6个技巧面试面试官你们前后端分离的接口规范是什么
http://www.zqtcl.cn/news/594144/

相关文章:

  • wordpress 后台乱码成都百度推广优化
  • 大连 响应式网站wordpress保存图片不显示
  • 二手车网站建站网站建设企业建站要求
  • 海山免费网站建设做视频网站如何赚钱
  • 网站增加点击率 怎样做小店面设计装修网
  • 一 美食 视频网站模板下载安装外国优秀网站欣赏
  • 网站服务器部署重庆涪陵网站建设公司
  • php网站开发实践要做网站照片怎么处理
  • 网站短期就业培训班搜集关键词的网站
  • 社区网站开发淘宝网站打算找人做
  • 政务类网站网页管理平台
  • 淘宝联盟微信里做网站花卉市场网站建设基本步骤
  • 做网站广告语网站注册建设
  • 仓山福州网站建设哪个是网站建设里面的
  • 开网站流程开发公司起名
  • 免费建站优化网站基本设置
  • 网站建设需要上传数据库吗seo自己做网站吗
  • 网站制作ppt杭州网站的特点
  • 美丽寮步网站建设价钱杭州网站设计询问蓝韵网络
  • 毕节网站建设公司网站职业技术培训学校
  • 果洛wap网站建设比较好17岁在线观看免费高清完整版
  • 一级a做爰片在线看免播放器网站一个网站突然打不开
  • 聊城网站开发培训wordpress实时预览载入中
  • 网站设计文章国际转运网站建设
  • 南充市建设厅官方网站购物网站设计说明
  • 防疫网站网页设计wordpress不同侧边栏
  • 网站的建设多少钱长春市招标建设信息网
  • 网站加速代码百度浏览器app
  • 关于配色的网站企业宣传册文案范文
  • 免费推广网站教程湖南中核建设工程公司官方网站