• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 安卓多线程间通信和多进程之间通信有什么不同?分别怎么实现?,安卓多线程

安卓多线程间通信和多进程之间通信有什么不同?分别怎么实现?,安卓多线程

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了安卓多线程间通信和多进程之间通信有什么不同?分别怎么实现?,安卓多线程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

安卓多线程间通信和多进程之间通信有什么不同?分别怎么实现?,安卓多线程


  当一个程序第一次启动的时候,Android会启动一个LINUX进程和一个主线程。默认的情况下,所有该程序的组件都将在该进程和线程中运行。 同时,Android会为每个应用程序分配一个单独的LINUX用户。Android会尽量保留一个正在运行进程,只在内存资源出现不足时,Android会尝试停止一些进程从而释放足够的资源给其他新的进程使用, 也能保证用户正在访问的当前进程有足够的资源去及时地响应用户的事件。线程是进程的有机组成部分,是CPU调度的基础。一般情况下,都有主线程和其他线程之分,只有主线程才可以刷新UI。应用程序启动后,将创建ActivityThread 主线程。

不同包名的组件可以一定的方式运行在同一个进程中。

一个Activity启动后,至少会有3个线程。一个主线程和2个binder线程。

1.安卓线程间通信的方式有以下几种

1)共享变量(内存)

2)管道

3)handle机制   

runOnUiThread(Runnable)

view.post(Runnable)

android 进程内的消息驱动机制---Handler,MessageQueue,Runnable,Looper

Looper和Message的处理机制:首先在主线程中创建了一个handler对象,目的是为了处理从子线程发送过来的消息,然后当子线程有发送消息的需求时会使用Message对象,消息首先会被存储在Message queue消息队列中,主线程还有一个Looper消息轮询器,会循环遍历消息队列中的消息,当发现消息的时候会发送消息给handler处理(更新ui等操作),handler调用handleMessage处理完后将Message置为null以便回收.

 

2进程间的通信

进程间的通信:

bind机制(IPC->AIDL)

linux级共享内存

boradcast

Activity之间可以通过intent来传递数据

 

3.安卓结束进程几种方式

1)使用ActivityManager中的restartPackage(String packname)方法,这里清单文件里面要配置权限

2)android.os.process.killProcess(int pid)只能终止本程序的进程

3)System.exit()

4)在android2.2版本之后则不能再使用restartPackage()方法,而应该使用killBackgroundProcesses()方法,同时应该配置权限

5)利用反射调用forceStopPackage来结束
  1. Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
  2. forceStopPackage.setAccessible(true);
  3. forceStopPackage.invoke(am, yourpkgname);
配置文件中需要添加定义: android:sharedUserId="android.uid.system"     另外需要再在配置文件添加权限: <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>   

6)使用Linux指令kill -9

7)退出到主屏幕

 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
        // event.getRepeatCount():按下返回键,同时没有重复
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            Intent home = new Intent(Intent.ACTION_MAIN);   
            home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
            home.addCategory(Intent.CATEGORY_HOME);   
            startActivity(home);
        } 
        
        return super.onKeyDown(keyCode, event);   
    } 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 安卓多线程间通信和多进程之间通信有什么不同?分别怎么实现?,安卓多线程

相关文章

  • 2017-05-26Android Studio 2.0 beta 7 发布
  • 2017-05-26Android入门——Drawable与对应的资源xml的应用
  • 2017-05-26cobbler系统使用之二高级篇的补充篇---关于kickstart文件内容的配置说明
  • 2017-05-26Android 代码动态改变View的属性
  • 2017-05-227.3.3 Android 文件下载(2)
  • 2017-05-26Native SBS for Android,nativeandroid
  • 2017-05-26Android--音乐播放器
  • 2017-05-26MySQL参数table_open_cache的设置
  • 2017-05-26手机影音2--软件架构分析,影音2--架构分析
  • 2017-05-26Android listview和gridview以及view的区别,androidgridview

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 小明学习Linux运维实战演练
    • 谈谈LoveLive SIF以及即将诞生的LL练习器,lovelivesif
    • ScrollView中嵌套GridView,ListView只显示一行的解决办法,scrollviewgridview
    • Android listview和gridview以及view的区别,androidgridview
    • 一.TextView 显示文本框控件, EditText 输入文本框,.textviewedittext
    • Native SBS for Android,nativeandroid
    • 7.3.2 Android 文件下载(1)
    • Android框架设计模式(四)——Adapter Method
    • Android View体系(五)从源码解析View的事件分发机制
    • Android源码之陌陌源码,android源码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有