第二行代码

我为恬恬上青铜 我为恬恬上青铜     2022-08-25     498

关键词:

---恢复内容开始---

一、开始启程--你的第一行Android代码

Android的四层架构

1.linux内核层--为Android设备的各种硬件提供底层驱动

2.系统运行库层--通过一些C/C++库来为Android系统提供主要的特性支持

  Android运行时库,提供一些核心库,允许开发者使用java语言编写Android应用

    Dalvik--运行时编译

    ART--安装时编译

3.应用框架层--提供构建应用程序时可能遇到的各种API

4.应用层--应用程序

 

二、先从看得到的入手--探究活动

1.活动的生命周期

  oncreate 方法 当Activity第一次启动的时候调用

  onDestroy 方法 当Activity销毁的时候调用
  onStrat() 方法 当Activity变成可见的时候调用 
  onStop() 方法 当activity 不可见的时候调用
  onResume()方法 当activity可以获取焦点的时候  当界面的按钮可以被点击了
  onPause()方法 当失去焦点的时候调用 当按钮不了可以被点击的时候调用
  onRestart()当界面重新启动的时候调用
 
2.显式意图--用于跳转自己的页面
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
3.隐式意图--用于跳转系统自带程序的页面
                Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
         startActivity(intent);
4.界面跳转传递数据(向下一个界面传递数据)
SecondActivity.actionStart(MainActivity.this,"data1","data2");
 
5.界面跳转返回数据(返回数据给上一个界面)
startActivityForResult();
6.onSaveInstanceState()--活动被回收时调用,解决活动被回收临时数据得不到保存问题
 
7.活动的启动模式
standard--先进先出,栈顶可重复叠加
singTop--栈顶不可重复叠加  应用场景:浏览器书签
singTask--检查,若已存在,所有上面活动出栈  应用场景:浏览器的Activity
singleInstance--新开任务栈,新开的任务栈只有一个实例  应用场景:来电显示
 
8.活动的高级用法

public class BaseActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());//知晓当前是在哪一个活动
ActivityCollector.addActivity(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);//随时随地退出程序
}

}

9.Menu的使用

10.活动的销毁--finish();效果同back键

  
三、软件也拼脸蛋--UI开发的点点滴滴
1.Android控件的可见属性
visible--可见
invlsible--不可见,占据位置和大小
gone--不可见,不占空间
 
2.对话框
 
3.布局,百分比布局
gravity:对齐方式,子控件相对于当前控件的对齐方式
layout_gravity:当前控件相对于父控件的对齐方式
margin:当前控件相对于四周的间距。
padding:当前控件中的子控件相对于当前控件四周的间距。
所有控件直接或间接继承View,所有布局直接或间接继承View
引入布局
<include layout="@layout/title"/>
标题隐藏
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if (actionBar != null)
actionBar.hide();

4.ListView--用于展示大量的数据,这些数据可以是网上下载的,也可以是从数据库中读取的
更强大的滚动控件--RecyclerView
 
 
四、手机平板要兼顾--探究碎片
1.碎片是嵌入活动中显示的
2.活动中得到相应的碎片
  RightFragment rightFragment = (RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);
3.碎片中调用活动里的方法
  MainActivity activity = (MainActivity) getActivity();
4.碎片的生命周期
onAttach()--碎片与活动建立关联时调用
onCreate()
onCreateView()--为碎片创建视图(加载布局)时调用
onActivityCreated()--与碎片相关联的活动已经加载完毕的时候调用
onStart()
onResume()
onPause()
onStop()
onDestroyView--与碎片相关联的视图被移除时调用
onDestroy()
onDetach()--碎片和活动解除关系时调用
5.动态加载布局
6.平台和手机兼容
 
五、全局大喇叭--详解广播机制--打开程序其他组件,启动一个服务,监听网络状态(动态注册),开机启动(静态注册)等
1.标准广播--异步执行广播,所有广播接收器同时接到广播,无法被拦截
2.有序广播--同步执行广播,优先级,可以被拦截
3.动态注册广播--可自由地控制注册与注销,必须要在程序启动后才能接收到广播
必须取消,在onDestory()方法中调用unregisterReceiver()方法
4.静态注册广播--程序未启动时也能收到广播
注册后直接实现onReceive()方法
5.onReceive()方法运行较长时间而没有结束时程序会报错,不能做耗时操作。so,广播接收器常用于,打开程序其他组件,启动一个服务等。
6.自定义广播
7.中断广播abortBroadcast()
8.本地广播LocalBroadcastManager--解决广播安全性问题,只能在应用程序内部传递,无法静态注册
 
六、数据存储全方案--详解持久化技术
1.文件存储
openFileInput()和openFileOutput
2.SharePreferences
3.SQLite--使用LitePal操作数据库
 
七、跨程序共享数据--探究内容提供器
1.不同应用程序共享数据(跨程序数据共享),可实现部分数据共享
2.运行时权限(Android6.0)
3.使用场景--使用现有内容提供者读取和操作相应程序中的数据,创建自己的内容提供者给我们的程序数据提供对外访问接口
 
八、丰富你的应用程序--运用手机多媒体
1.通知(Notification)--应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行。
2.通知可在活动(应用较少,一般程序进入后台才需要使用通知),广播接收器,服务里创建
3.调用摄像头和相册
4.播放多媒体文件
 
九、看看精彩世界--使用网络技术
1.WebView的用法
2.使用HTTP协议访问网络--HTTP协议--客户端向服务器发送一条HTTP请求,服务器收到请求后返回一些数据给客户端,然后客户端再对这些数据进行解析和处理
3.HttpURLConnection
4.OkHttp
5.解析XML格式数据
6.解析JSON格式数据--GSON
 
十、后台默默的劳动者--探究服务
1.服务是Android实现程序后台运行的解决方案,适合执行那些不需要和用户交互而且还需要长期运行的任务,服务依赖与创建服务的进程,进程被杀掉,服务停止。

2非UI线程不能更新UI

耗时操作(联网 URL)不能再UI线程执行(可能连接超时)

Message 消息

MessageQueue 消息队列       存放程序收到的消息队列

Handler 消息处理器     1.发送消息-sendMessage()       2.处理消息-handlerMessage()

Looper  轮询器      轮转查询消息队列,一旦发现有消息到达,把消息转发给发送此消息的Handler进行处理

runOnUiThread()  异步处理消息接口封装

3.AsyncTask
  onPreExecute()--界面初始化
  doInBackground(Prams...)--所有代码在子线程中运行
  onProgressUpdate(Prams...)--可以对UI进行操作
  onPostExecute(Result)--后台任务返回结果作为参数,可以进行一些UI操作
4.Service
  onCreate()--服务第一次创建时调用
  onStartCommand()--每次启动服务时调用
  onDestroy()--服务销毁时调用
  onBind()--与服务间进行通行
5.startservice 方式开启服务 服务就会在后台长期运行 直到用户手工停止 或者调用stopService()或stopSelf()方法 服务才会被销毁

bindService 方式开启服务 当activity销毁的时候服务也销毁  不求同时生但求同时死

6.Service
  onCreate()--服务第一次创建时调用
  onStartCommand()--每次启动服务时调用
  onDestroy()--服务销毁时调用
7.前台服务--应用:彩云天气
8.android进程优先级

  1、空进程

    这是Android系统优先杀死的,因为此时该进程已经没有任何用途。

  2、后台进程

    包含不可见的Activity,即跳转到其他activity后,由于资源不足,系统会将原来的activity杀死(即跳转的来源)

  3、服务进程

    即Service,当系统资源不足时,系统可能会杀掉正在执行任务的Service。因此在Service执行比较耗时的操作,并不能保证一定能执行完毕。

  4、可见进程

    当前屏幕上可以看到的activity,例如显示一个对话框的activity,那么对话框变成了前台进程,而调用他的activity是可见进程,但并不是前台的。

  5、前台进程

    当前处于最前端的activity,也就是Android最后考虑杀死的对象。一般来说,前台进程Android系统是不会杀死的,只有当前4个都杀掉资源依旧不够才可能会发生。

9.服务的最佳实践--完整版的下载示例
 
十一、Android特色开发--基于位置的服务(Location Based Service)
1.LBS核心--确定用户的位置
GPS定位--手机内置的GPS硬件和卫星交互获取当前经纬度位置,精确度高,只能在室外使用
网络定位--根据手机当前网络附近的三个基站进行测速,计算手机和每个基站的位置,确定出一个大概位置,精确度一般,室内室外均可用
2.百度地图
 
十二、最佳的UI体验--Material Design实战
1.Toolbar
2.DrawerLayout
3.NavigationView
4.FloatingActionButton--悬浮按钮和可交互提示
5.Snackbar
6.CoordinatorLayout
7.CardView
8.AppBarLayout
9.SwipeRefreshLayout
10.CollapsingToolbarLayout
 
十三、继续进阶--你还需要掌握的高级技巧
1.全局获取Context的技巧--Application
2.使用Intent传递对象--Serializable方式,Parcelable方式
3.定制自己的日志工具--LogUtil封装
4.调试Android程序
5.创建定时任务
  Timer类--不适合后台长期运行的定时任务
  Alarm机制
6.Doze模式
7.多窗口模式
8.Lambda表达式
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

---恢复内容结束---

java示例代码_从edittext的第二行开始键入

java示例代码_从edittext的第二行开始键入 查看详情

为啥这段代码在第二行写输入?

】为啥这段代码在第二行写输入?【英文标题】:Whydoesthiscodewriteinputonsecondline?为什么这段代码在第二行写输入?【发布时间】:2020-09-0807:48:18【问题描述】:#include<stdio.h>#include<string.h>voidmain()FILE*fp;charline[1024];charfilenam... 查看详情

第二行代码

---恢复内容开始---一、开始启程--你的第一行Android代码Android的四层架构1.linux内核层--为Android设备的各种硬件提供底层驱动2.系统运行库层--通过一些C/C++库来为Android系统提供主要的特性支持  Android运行时库,提供一些核心库... 查看详情

cssavada-更改第二行标题文本的文本颜色(代码片段)

查看详情

css将第二行列表项与第一行对齐(代码片段)

查看详情

《第二行代码》来了

转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/52032038本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索郭霖即可关注,每天都有文章更新。回顾《第一行代码》从出版到现在已经有两年多的时间了... 查看详情

python大法好!这三行中的第二行代码可以说尽显霸气了!(代码片段)

Exercise:Followtheinstructionsandimplementmodel().Whenexamples[index]containsonedinosaurname(string),tocreateanexample(X,Y),youcanusethis:index=j%len(examples)X=[None]+[char_to_ix[ch]forch 查看详情

开始看《第二行代码》及官方第一个例程学习(部分)

...发现第一行代码不错,可惜是基于eclipse的,偶然看到出第二版了,还基于Androidstudio 我立马决定照着这本教材学!!!开始之前我就想先找找书上例子的源码,结果发现书上开头几页已经写了网址了,去github找到后就是复制... 查看详情

python读取大文件倒数第二行

参考技术Apython读取大文件倒数第二行?答案如下:python读取大文件倒数第二行第一步打开设置,第二步是包装重组履约响应量化。 查看详情

如果可用,则选择第二行(如果不是第一行)(代码片段)

我有一个如下所示的表格:我想选择与InstanceNumber1的RowNumber2和其他实例的rownumber1对应的Operator条目。这是一个例子,其中只有instancenumber1有两个rownumber,但我想能够选择每个intances的最后一个rownumber。任何帮助表示赞赏。答案一... 查看详情

如何阻止 flex 行的第二行出现在页面中间? [复制]

】如何阻止flex行的第二行出现在页面中间?[复制]【英文标题】:HowdoIstopthesecondlineofaflexrowfromendingupinthemiddleofapage?[duplicate]【发布时间】:2021-01-2502:20:40【问题描述】:我的代码的#mainArticle部分包含一个使用行方向的弹性显示。... 查看详情

用html怎么画一个第一行平均分两列,第二行平均分三列的表格代码

比如第一行3列均分,第二行二列均分,就找第一行列数和第二行列数的最小公倍数,如以下这个,最小公倍数就是标题跨列数:6,第一行每一单元格跨列2 第二行跨列3,刚好。<tableclass="m-pnjctable"><tr><tdcols... 查看详情

flex布局第一行div左对齐,第二行中对齐,第三行右对齐(代码片段)

.flexdisplay:flex;flex-direction:column;width:600px;.flexdivwidth:100px;height:100px;background:red;margin-left:2px;.flexdiv:nth-of-type(1)align-self:flex-start;.flexdiv:nth-of-type(2)align-sel 查看详情

vbs关于提取word第二行的文字为文件名的方式

如何用VBS代码批量提取WORD第二行内容为文档名,谢谢!!!有看到用VBS提取WORD文档内容第一行为文档名的代码?第二行怎么提呢?http://zhidao.baidu.com/question/162828108.html?fr=qrl&cid=1069&index=1求完整代码???谢谢!完整代码:1、用... 查看详情

jquery 数据表返回倒数第二行而不是最后一行

】jquery数据表返回倒数第二行而不是最后一行【英文标题】:jquerydatatableisreturningsecondlastrowinsteadoflastrow【发布时间】:2018-10-2919:43:35【问题描述】:我正在开发一个使用jquery数据表的应用程序,并且在用户插入除以下代码之外... 查看详情

第二行的css省略号

】第二行的css省略号【英文标题】:cssellipsisonsecondline【发布时间】:2011-07-1306:52:24【问题描述】:CSStext-overflow:ellipsis在第二行,这可能吗?我在网上找不到。示例:我想要的是这样的:Ihopesomeonecouldhelpme.Ineedanellipsisonthesecondline... 查看详情

在表单的第二行制作更大的文本框

】在表单的第二行制作更大的文本框【英文标题】:makingabiggertextboxonasecondrowoftheform【发布时间】:2020-09-0115:52:04【问题描述】:我的表单上有两行文本框。第一行有三个文本框,下一行,我只想要一个宽度为100%的文本框。以下... 查看详情

使用 CSS 从表格的第二行替换行颜色

】使用CSS从表格的第二行替换行颜色【英文标题】:Alternaterowcoloursfrom2ndrowofthetableusingCSS【发布时间】:2020-11-1219:07:35【问题描述】:我有一张如下表。我需要从第二行开始应用替代颜色。当我使用nth-child选择器来区分奇数行和... 查看详情