企业网站源码php,高端交互式网站建设,网站建设中的矢量图标,凡科互动官网登录入口官方文章目录 1. Android系统架构2. Activity2.0 定义2.1 生命周期2.2 生命状态2.3 启动模式 3. Service3.1 定义3.2 两种启动方式3.3 生命周期3.4 跨进程service3.5 IntentService 4. BroadCastReceiver4.1 概念4.2 组成4.3 广播接收器的分类4.4 生命周期4.5 静态注册和动态注册 5… 文章目录 1. Android系统架构2. Activity2.0 定义2.1 生命周期2.2 生命状态2.3 启动模式 3. Service3.1 定义3.2 两种启动方式3.3 生命周期3.4 跨进程service3.5 IntentService 4. BroadCastReceiver4.1 概念4.2 组成4.3 广播接收器的分类4.4 生命周期4.5 静态注册和动态注册 5. ContentProvider6. Intent6.1 作用6.2 显示Intent和隐式Intent 7. Fragment7.1 定义作用 Demo分析1. 监听电量变化2. 监听开机启动 总结组件知识界面通信存储资源其他 ADB工具使用 TODO:放个壳在这里 内容后续加 1. Android系统架构 Linux内核层 Android系统是基于Linux内核的这一层为Android设备的各种硬件提供了底层的驱动如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。系统运行库层 这一层通过一些C/C库为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持OpenGL|ES库提供了3D绘图的支持Webkit库提供了浏览器内核的支持等。在这一层还有Android运行时库它主要提供了一些核心库允许开发者使用Java语言来编写Android应用。另外Android运行时库中还包含了Dalvik虚拟机5.0系统之后改为ART运行环境它使得每一个Android应用都能运行在独立的进程中并且拥有一个自己的虚拟机实例。相较于Java虚拟机Dalvik和ART都是专门为移动设备定制的它针对手机内存、CPU性能有限等情况做了优化处理。应用框架层 这一层主要提供了构建应用程序时可能用到的各种APIAndroid自带的一些核心应用就是使用这些API完成的开发者可以使用这些API来构建自己的应用程序。应用层 所有安装在手机上的应用程序都是属于这一层的比如系统自带的联系人、短信等程序或者是你从Google Play上下载的小游戏当然还包括你自己开发的程序。 核心总结 框架中各层作用 1、内核层包含大量驱动同时可让Android利用主要安全功能(系统和内核安全)。 2、HAL提供标准接口屏蔽硬件差异。 3、C/C系统库Android基础功能库。主要包括init孵化来的用户空间的守护进程 Android Runtime安卓应用的基础环境。 4、系统系统框架层连接应用层为上层提供基础功能接口。 5、系统应用层包含各类应用负责与用户进行交互。 通过进程分析各层之间的联系 1、 Loader层上电加载预设参数准备启动内核层的swapper进程。 2、 内核层中swapper进程启动加载驱动、启动Kthreadd线程、准备启动Init进程。 3、 C框架层启动Init进程Init加载各类服务同时开启最重要的Zygote进程。 4、 Java 框架根据启动的Zygote进程fork出system server进程。 5、 应用层根据启动的system server进程开启应用。
2. Activity
2.0 定义
Activity 是与用户交互的入口点。它表示拥有界面的单个屏幕
2.1 生命周期 onCreate()会在系统首次创建Activity时触发 onStart()当 Activity 进入“已开始”状态时系统会调用此回调。onStart() 调用使 Activity 对用户可见因为应用会为 Activity 进入前台并支持互动做准备 onResume() Activity 会在进入“已恢复”状态时来到前台然后系统调用 onResume() 回调。这是应用与用户互动的状态。应用会一直保持这种状态直到某些事件发生让焦点远离应用。此类事件包括接到来电、用户导航到另一Activity或设备屏幕关闭。当发生中断事件时Activity 进入“已暂停”状态系统调用 onPause() 回调。如果 Activity 从“已暂停”状态返回“已恢复”状态系统将再次调用 onResume() 方法。因此应实现 onResume()以初始化在 onPause() 期间释放的组件并执行每次 Activity进入“已恢复”状态时必须完成的任何其他初始化操作。 onPause() 系统将此方法视为用户将要离开您的 Activity 的第一个标志尽管这并不总是意味着 Activity 会被销毁此方法表示 Activity 不再位于前台。 onStop() 如果您的 Activity 不再对用户可见说明其已进入“已停止”状态因此系统将调用 onStop() 回调。 在 onStop() 方法中应用应释放或调整在应用对用户不可见时的无用资源。例如应用可以暂停动画效果或从精确位置更新切换到粗略位置更新。 进入“已停止”状态后Activity 要么返回与用户互动要么结束运行并消失。如果 Activity 返回系统将调用 onRestart()。如果 Activity 结束运行系统将调用 onDestroy()。 onDestroy() 销毁 Activity 之前系统会先调用 onDestroy()。
2.2 生命状态
运行状态位于返回栈栈顶 暂停状态不再位于栈顶但是仍然可见 停止状态不再位于栈顶并且完全不可见 销毁状态从返回栈中移除
2.3 启动模式
standard模式(默认) 每当启动一个新的Activity它就会在返回栈中入栈并处于栈顶的位置。对于使用standard 模式的Activity系统不会在乎这个Activity 是否已经在返回栈中存在每次启动都会创建一个该Activity 的新实例。 singleTop 模式 当Activity 的启动模式指定为singleTop 在启动Activity 时如果发现返回栈的栈顶已经是该Activity 则认为可以直接使用它不会再创建新的Activity 实例。 singleTask 当Activity 的启动模式指定为singleTask 每次启动该Activity 时系统首先会在返回栈中检查是否存在该Activity 的实例如果发现已经存在则直接使用该实例并把在这个Activity 之上的所有其他Activity 统统出栈如果没有发现就会创建一个新的Activity 实例。 singleInstance 指定为singleInstance 模式的Activity 会启用一个新的返回栈来管理这个Activity 其实如果singleTask 模式指定了不同的taskAffinity 也会启动一个新的返回栈
3. Service
3.1 定义
服务是一个通用入口点用于因各种原因使应用在后台保持运行状态。它是一种在后台运行的组件用于执行长时间运行的操作或为远程进程执行作业。服务不提供界面。
3.2 两种启动方式
(1)通过startService和stopService方式启动和停止服务 (2)通过bindService和unbindService的方式启动和停止服务
3.3 生命周期 startService()生命周期 onCreate():当Service第一次被创建时由系统调用 onStartCommand(): 当调用startService方法启动Service时被调用 onDestroy():当service不再使用时由系统调用bindService()生命周期 onBind():当bindService方法启动Service时被调用 onUnbind(): 当unbindService方法解除绑定时被调用
3.4 跨进程service
通过aidl实现c/s提供服务接口流程 (1)服务端Service Service端提供暴露服务端接口的aidl文件 创建aidl文件在接口包内添加服务端的接口 创建完毕后立刻编译 service代码文件MyService.java 继承aidl的接口代替非跨进程调用中service使用bind接口在onBind中返回该接口实例 AndroidManifest.xml 注册服务并设置Inten过滤器 (2)客户端Client 添加aidl文件 文件的路径、包名、接口名都需要一致 MainActivity.java 剩余部分和正常的bindService中MainActvity的流程基本一致创建对应的binder跨进程调用就是对应的aidl接口创建ServiceConnected实例并重写onServiceConnected和onServiceDisconnected方法以及MainActivity中的剩余的应有逻辑。
3.5 IntentService
IntentService是 Scrvice 的子类增加了额外的功能。 Service存在的问题 Service不会专门启动一个单独的进程Service和它所在的应用在同一个进程中。Service不是一条新的线程因此不应该在Service中直接处理耗时的任务会阻塞主线程造成ANR(程序无响应)异常。 IntentService的优点 IntentService会创建单独的worker线程来处理所有的Intent请求。 在执行耗时操作时不会阻塞主线程更不会产生ANR。 IntentService会创建单独的worker线程来处理onHandleIntent()方法实现的代码所以不用处理多线程问题执行完毕后会自行调用onDestroy()方法进行关闭。
4. BroadCastReceiver
4.1 概念
BroadCast Receiver广播接收者使用了设计模式中的观察者模式基于消息的发布/订阅事件模型用于响应来自其他应用程序或者系统的广播消息是一个全局监听器。
4.2 组成
1)消息订阅者广播接收者: 广播接收者通过 Binder机制在AMS注册 2)消息发布者广播发布者: 广播发送者通过 Binder 机制向AMS发送广播 3)消息中心AMS即Activity Manager Service: AMS根据广播发送者要求在已注册列表中寻找合适的广播接收者AMS将广播发送到合适的广播接收者相应的消息循环队列中。 广播接收者通过消息循环拿到此广播并回调 onReceive()
4.3 广播接收器的分类 标准广播 是一种完全异步执行的广播通过context. senddBroadcast(intent)方法发送。在广播发出后所有的BroadcastReceiver几乎在同一时刻收到这个广播消息它们之间没有先后顺序这种广播的效率较高并且不能被拦截。 有序广播 是一种同步执行的广播通过context. sendOrderedBroadcast(intent)方法发送。在广播发出之后同一时刻只有一个广播接收器能够收到这条广播消息当这个广播接收器中的逻辑执行完毕后广播才会继续传递通过setResult()方法传递通过getResult()方法接收。即广播接收器有先后顺序优先级高在receiver的intent-filter中的android:priority属性设置的广播接收器可以先收到广播消息且前面的广播接收器还可以截断正在传递的广播通过abortBroadcast()方法丢弃这样后面的广播接收器就无法收到广播消息。 本地广播 上述俩种广播是全局广播所有应用均可收到而本地广播仅在进程内传播有保护数据安全的作用。调用者不同本地广播调用的是LocalBroadcastManager相关方法全局广播调用的是Context的相关方法。且本地广播没有静态注册的方法。 系统广播 Andrroid内置了多个系统广播。使用系统广播时只需在注册广播接收者时定义相关的action即可。
4.4 生命周期
BroadcastReceiver的生命周期从对象调用它开始到onReceiver方法执行完成之后结束。 每次广播被接收后会重新创建BroadcastReceiver对象并在onReceiver方法中执行完就销毁如果BroadcastReceiver的onReceiver方法中不能在10秒内执行完成Android会出现ANR异常。所以不要在BroadcastReceiver的onReceiver方法中执行耗时的操作。如果需要在BroadcastReceiver中执行耗时的操作可以通过Intent启动Service来完成。但不能绑定Service。如果我们在Activity中注册了BroadcastReceiver当Activity销毁时要主动撤销注册即添加onDestroy方法否则会出现异常。
4.5 静态注册和动态注册
案例学习监听电池电量变化Android四大组件——BroadcastReceiver——动态注册和静态注册 - 虞美人体重90 - 博客园 (cnblogs.com) https://www.cnblogs.com/Xiang-MY/p/16191383.html 动态注册广播接收器可以自由的控制注册与取消具有灵活性。因为其生命周期与对应的Acitivity的生命周期是一致的所以只有在应用程序启动后才能收到广播。 静态注册在AndroidManifest.xml中进行注册。静态注册的广播不受程序生命周期的影响当应用程序关闭后仍可以接收到广播 动态注册的BroadcastReceiver可以自由控制注册和注销但必须在程序启动之后才能接收广播因为注册的逻辑是写在onCreate()中的。 静态注册的BroadcastReceiver可以在程序未启动的情况下也能接收广播。
5. ContentProvider
ContentProvider主要用于在不同的应用程序之间实现数据共享的功能它提供了一套完整的机制允许一个程序访问另一个程序中的数据同时还能保证被访问数据的安全性。目前使用ContentProvider是Android实现跨程序共享数据的标准方式。
6. Intent Android开发 - Intent和Broadcast Receiver - guqiangjs - 博客园 (cnblogs.com) https://www.cnblogs.com/guqiangjs/p/5932612.html
6.1 作用
Intent是一种在不同组件之间传递的请求消息是应用程序发出的请求和意图。作为一个完整的消息传递机制Intent不仅需要发送端还需要接收端
6.2 显示Intent和隐式Intent
显式Intent 对于明确指出了目标组件名称的Intent我们称之为显式Intent。 隐式Intent 隐式的Intent提供了一种机制可以让匿名的应用程序组件响应动作请求。这意味着可以要求系统启动一个可执行给定动作的Activity而不必知道需要启动哪个应用程序或者Activity。 例如希望让用户从应用程序中拨打电话那么可以实现一个新的拨号程序也可以使用一个隐式的Intent来请求一个在电话号码表示为一个URI上执行动作。
7. Fragment
Fragment详解之一——概述_fragment启舰_启舰的博客-CSDN博客
https://blog.csdn.net/harvic880925/article/details/44917955
7.1 定义作用
Fragment是一种可以嵌入在Activity当中的UI片段它能让程序更加合理和充分地利用大屏幕的空间因而在平板上应用得非常广泛
Demo分析
1. 监听电量变化
新建一个类让它继承BroadcastReceiver并重写父类的onReceive()方法就行了。这样当有广播到来时onReceive()方法就会得到执行具体的逻辑可在该方法中处理。(广播的动态注册) 监听电量变化的广播还需要打开权限
package com.java.androidstudy;import androidx.appcompat.app.AppCompatActivity;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;public class MainActivity extends AppCompatActivity {private static final String TAG MainActivity;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//我们要收听的频道是电量变化IntentFilter intentFilter new IntentFilter();intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);//电量变化想监听什么广播就添加相应的action//创建接收者BatteryLeveReceiver batteryLeveReceiver new BatteryLeveReceiver();//动态注册广播this.registerReceiver(batteryLeveReceiver,intentFilter);}//第一步创建一个广播接收者继承自BroadcastReceiverprivate class BatteryLeveReceiver extends BroadcastReceiver{Overridepublic void onReceive(Context context, Intent intent) {//在这里写接收到广播后的逻辑处理String action intent.getAction();Log.d(TAG,收到了电量变化的广播action is action);Log.d(TAG,当前电量intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0));//获取电量可戳进BatteryManager的源代码看看}}//取消广播注册,否则会造成内存卡顿Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(batteryLeveReceiver);}效果展示 运行后在模拟器上拖动电量
2. 监听开机启动
静态注册
//第一步新建BootCompleteReceiver类
public class BootCompleteReceiver extends BroadcastReceiver {private static final String TAGBootCompleteReceiver;Overridepublic void onReceive(Context context, Intent intent) {//第三步收到开机广播后做的事情String action intent.getAction();Log.d(TAG,action is action);Log.d(TAG,开机完成);Toast.makeText(context,收到开机完成的广播,Toast.LENGTH_SHORT).show();//静态注册不需要启动程序也可以接收到广播不需要取消注册。}
}然后我们需要在AndroidManifest.xml文件中标签内进行开机广播的静态注册。
receiver android:name.BootCompleteReceiverandroid:enabledtrueandroid:exportedtrue!-- 第二步静态注册action --intent-filteraction android:nameandroid.intent.action.BOOT_COMPLETED / /intent-filter/receiver此外我们还需要打开开机广播的权限 现在运行程序后重启模拟器日志截图如下
总结组件知识
界面
Activity —— Android最基本的界面容器用于显示所有APP的内容 Fragment—— Android碎片化界面容器用于嵌入显示APP指定内容 Layout文件 —— 布局文件与ActivityFragmentAdapter自定义View一起使用用于绘制界面布局和内容 Adapter —— 界面适配器。用于为重复显示组件如ListView GridView等组件编写列表项显示内容和显示逻辑 控件类 —— 主要是设置各种控件的事件监听器如OnClickListener等 容器类 —— LinearLayOutRelativeLayoutFrameLayoutScrollView等 组件类 —— Button,TextView,EditText,ImageView等 列表类 —— ListViewGridViewRecycleView等
通信
Intent —— 传递数据的容器主要用于Activity,Fragment界面跳转以及广播发送和接收等数据传递行为中。 ContentProvider —— 内容共享者主要用于跨应用来获取其他应用的数据或者数据库。
存储
SharedPreference —— 通过key-value键值对的形式来保存数据适合小量数据 SQLite —— 数据库用于本地存储大量数据
资源
String —— 存储全局字符串 通常将所有字符串资源都存放在string中 Dimen —— 主要用于保存控件的各类尺寸。一般将全局尺寸写在dimen中 Mipmap —— 主要用于存储各种应用的各种图标资源文件 Drawable —— 要勇于存储图片shape和selector等图像资源。图像可以通过各种dpi来区分分辨率以达到不同分辨率视频的效果。 Color —— 存储全局颜色值便于进行统一更改。 Assest —— 存放静态资源如html页面等。
其他
Service —— 后台服务 Application —— 全局应用对象 Mainfest —— android项目配置菜单文件用于注册和配置activityservice等用于配置权限和应用设置选项。
ADB工具使用
添加链接描述 启用ADB服务 adb start-server 关闭ADB服务: adb kill-server 使用指定ADB设备adb -s 为adb devices获得的序列号如上图lcc77709 设置端口转发为5555 adb tcpip 5555 开启网络调试adb connect xxx.xxx.xxx.xxx:5555。xxx.xxx.xxx.xxx为手机局域网IP 断开网络调试adb disconnect xxx.xxx.xxx.xxx:1234 使用usb连接 adb usb 使用root模式 adb root 重启设备 adb reboot 关机 adb shell reboot -p。 重启到rec模式(fb模式) adb reboot recovery(fastboot) 查看已连接的设备信息adb devices 查看adb 版本信息adb version 查看日志adb logcat 列出手机装的所有app 的包名adb shell pm list packages 列出系统应用的所有包名adb shell pm list packages -s 文章转载自: http://www.morning.tdmgs.cn.gov.cn.tdmgs.cn http://www.morning.nkqxb.cn.gov.cn.nkqxb.cn http://www.morning.nfqyk.cn.gov.cn.nfqyk.cn http://www.morning.zpnfc.cn.gov.cn.zpnfc.cn http://www.morning.yrck.cn.gov.cn.yrck.cn http://www.morning.bnrff.cn.gov.cn.bnrff.cn http://www.morning.xbckm.cn.gov.cn.xbckm.cn http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn http://www.morning.bmjfp.cn.gov.cn.bmjfp.cn http://www.morning.wlnr.cn.gov.cn.wlnr.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.kvzvoew.cn.gov.cn.kvzvoew.cn http://www.morning.zdmrf.cn.gov.cn.zdmrf.cn http://www.morning.fnpyk.cn.gov.cn.fnpyk.cn http://www.morning.clbsd.cn.gov.cn.clbsd.cn http://www.morning.fllfz.cn.gov.cn.fllfz.cn http://www.morning.bpmfl.cn.gov.cn.bpmfl.cn http://www.morning.gtqx.cn.gov.cn.gtqx.cn http://www.morning.nqyfm.cn.gov.cn.nqyfm.cn http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn http://www.morning.dangaw.com.gov.cn.dangaw.com http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn http://www.morning.ykkrg.cn.gov.cn.ykkrg.cn http://www.morning.hhskr.cn.gov.cn.hhskr.cn http://www.morning.snzgg.cn.gov.cn.snzgg.cn http://www.morning.xqbbc.cn.gov.cn.xqbbc.cn http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn http://www.morning.khcpx.cn.gov.cn.khcpx.cn http://www.morning.ndmbd.cn.gov.cn.ndmbd.cn http://www.morning.wzwyz.cn.gov.cn.wzwyz.cn http://www.morning.nrgdc.cn.gov.cn.nrgdc.cn http://www.morning.fglxh.cn.gov.cn.fglxh.cn http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn http://www.morning.btpll.cn.gov.cn.btpll.cn http://www.morning.lhygbh.com.gov.cn.lhygbh.com http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.qphcq.cn.gov.cn.qphcq.cn http://www.morning.ctxt.cn.gov.cn.ctxt.cn http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn http://www.morning.dphmj.cn.gov.cn.dphmj.cn http://www.morning.cnqff.cn.gov.cn.cnqff.cn http://www.morning.niukaji.com.gov.cn.niukaji.com http://www.morning.sskkf.cn.gov.cn.sskkf.cn http://www.morning.yrjxr.cn.gov.cn.yrjxr.cn http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn http://www.morning.sfnjr.cn.gov.cn.sfnjr.cn http://www.morning.nqfxq.cn.gov.cn.nqfxq.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.bnfrj.cn.gov.cn.bnfrj.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.jrgxx.cn.gov.cn.jrgxx.cn http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.zlrsy.cn.gov.cn.zlrsy.cn http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.kkwbw.cn.gov.cn.kkwbw.cn http://www.morning.kljhr.cn.gov.cn.kljhr.cn http://www.morning.nlbw.cn.gov.cn.nlbw.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.pfnrj.cn.gov.cn.pfnrj.cn http://www.morning.sqqpb.cn.gov.cn.sqqpb.cn http://www.morning.nlrxh.cn.gov.cn.nlrxh.cn http://www.morning.snyqb.cn.gov.cn.snyqb.cn http://www.morning.bqts.cn.gov.cn.bqts.cn http://www.morning.jwfqq.cn.gov.cn.jwfqq.cn http://www.morning.hcrxn.cn.gov.cn.hcrxn.cn http://www.morning.lftpl.cn.gov.cn.lftpl.cn http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn http://www.morning.tjqcfw.cn.gov.cn.tjqcfw.cn http://www.morning.mmzfl.cn.gov.cn.mmzfl.cn http://www.morning.mrgby.cn.gov.cn.mrgby.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com http://www.morning.flmxl.cn.gov.cn.flmxl.cn http://www.morning.gdpai.com.cn.gov.cn.gdpai.com.cn http://www.morning.ghpld.cn.gov.cn.ghpld.cn http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn