Android中如何在后台实现多线程
Android中如何在后台实现多线程
这篇文章主要介绍“Android中如何在后台实现多线程”,在日常操作中,相信很多人在Android中如何在后台实现多线程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android中如何在后台实现多线程”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
后台功能是Android的四大组件之一,其重要程度自然不言而喻,而服务是Android中实现程序后台运行的解决方案,非常适合去执行那些不需要交互,而且要长期运行的任务。而所有的任务默认都是在主线程完成的,也就是说,如果我们没有多线程的编程,就会导致主线程被堵塞
多线程
newThread(newRunnable(){@Overridepublicvoidrun(){}}).start();
通过new Thread就可以创建新的线程
classMyThread1implementRunnable{@Overridepublicvoidrun(){}}newThread(newMyThread()).start();
通过实现Runnable接口
classMyThread1extendsThread{@Overridepublicvoidrun(){}}newMyThread.start();
通过继承Thread
使用多线程时更新UI:
runOnUiThread(newRunnable(){publicvoidrun(){textView.setText(result);}})
当然,Android也提供了一套异步消息处理机制:
publicclassMainActivityextendsAppCompatActivity{privateHandlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){TextViewtextView=(TextView)findViewById(R.id.tvMsg);textView.setText(msg.obj.toString());}};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Buttonbutton=(Button)findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){newThread(newRunnable(){@Overridepublicvoidrun(){Messagemessage=newMessage();message.obj=newString("数据");handler.sendMessage(message);}}).start();}});}}
其中
Message用于封装消息。
Handle用于发送和处理消息,在子线程中调用sendMessage发送消息,在主程序中HandleMessage中处理
MessageQueu,保存了handle发送的消息等待处理
Looper完成消息派遣任务,不停检查队列中是否有消息,如果有就提取出来给handle
AsyncTask
是Android简化线程数据更新UI提供的一个抽象类
onPreExecute():在异步开始执行前被调用
onPostExecute():在异步执行结束后被调用
onProgressUpdate
doInBackground
使用服务
通过startService启动服务,如果已有服务则启动,没有则创建,创建的时候调用oncreat,每调用一次startService就调用一次onStartCommand
通过stopService或者stopSelf,会执行onDestroy
绑定服务
使用bindService绑定服务
unbindService解除绑定
到此,关于“Android中如何在后台实现多线程”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!
推荐阅读
-
android(如何快速开发框架 小米note开发版MIUI,安卓6.0,怎么安装Xposed框架)
稳定版,你必须先根除。你上网搜索安卓可以叫别人s框架,对方可以把框架做成jar包,把这个jar包加载到项目目录的libs文件中使...
-
android(studio 虚拟机启动不了 android studio可以当模拟器用吗)
androidstudio可以当模拟器用吗?AmdCUP引导模拟器有点复杂。雷电模拟器上的抖音怎么登录不上?不是,闪电模拟调用...
-
从实践中学习手机抓包与数据分析(android 手机抓包app)
android手机抓包app?netcapture抓包精灵app(手机抓包工具)又名sslcapture,是什么专业的安卓手机抓...
-
android(studio全局搜索 android studio怎么看app界面)
androidstudio怎么看app界面?在设备桌面点击运用直接进入到App界面,就也可以参与其他你的操作了。android-...
-
怎么把android框架源代码拉到本地(android studio如何运行别人的源代码)
androidstudio如何运行别人的源代码?androidstudio点击刚建在列表中你选择导入module,导入即可在用...
-
android(studio2022年使用教程 怎么安装Android studio详细教程)
怎么安装Androidstudio详细教程?androidstudio中haxm直接安装的方法追加:1、简单的方法打开Andr...
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能