|
28 | 28 | * TableLayout(表格布局) |
29 | 29 |
|
30 | 30 | 将子元素的位置分配到行或列中,一个TableLayout由许多的TableRow组成 |
| 31 | + |
| 32 | + |
31 | 33 | --- |
32 | 34 |
|
33 | 35 |
|
34 | 36 | **Activity生命周期。** |
35 | 37 |
|
| 38 | +* 启动Activity: |
| 39 | + onCreate()—>onStart()—>onResume(),Activity进入运行状态。 |
| 40 | +* Activity退居后台: |
| 41 | + 当前Activity转到新的Activity界面或按Home键回到主屏: |
| 42 | + onPause()—>onStop(),进入停滞状态。 |
| 43 | +* Activity返回前台: |
| 44 | + onRestart()—>**onStart()**—>onResume(),再次回到运行状态。 |
| 45 | +* Activity退居后台,且系统内存不足, |
| 46 | + 系统会杀死这个后台状态的Activity,若再次回到这个Activity,则会走onCreate()–>onStart()—>onResume() |
| 47 | +* 锁定屏与解锁屏幕 |
| 48 | + **只会调用onPause(),而不会调用onStop()方法,开屏后则调用onResume()** |
| 49 | + |
| 50 | +--- |
| 51 | + |
36 | 52 |
|
37 | 53 | **Acitivty的四种启动模式与特点。** |
38 | 54 |
|
@@ -134,16 +150,60 @@ public void onRestoreInstanceState(Bundle savedInstanceState) { |
134 | 150 |
|
135 | 151 | **Fragment生命周期** |
136 | 152 |
|
| 153 | + |
| 154 | + |
| 155 | +注意和Activity的相比的区别,按照执行顺序 |
| 156 | + |
| 157 | +* onAttach(),onDetach() |
| 158 | +* onCreateView(),onDestroyView() |
| 159 | + |
| 160 | +--- |
| 161 | + |
137 | 162 | **Service的两种启动方法,有什么区别** |
138 | 163 |
|
139 | 164 | **广播的两种动态注册和静态注册有什么区别。** |
140 | 165 |
|
141 | | -**ContentProvider使用方法** |
| 166 | +* 静态注册:在AndroidManifest.xml文件中进行注册,当App退出后,Receiver仍然可以接收到广播并且进行相应的处理 |
| 167 | +* 动态注册:在代码中动态注册,当App退出后,也就没办法再接受广播了 |
| 168 | + |
| 169 | +--- |
142 | 170 |
|
143 | 171 |
|
| 172 | +**ContentProvider使用方法** |
| 173 | + |
| 174 | +--- |
144 | 175 |
|
145 | 176 | **目前能否保证service不被杀死** |
146 | 177 |
|
| 178 | +**Service设置成START_STICKY** |
| 179 | + |
| 180 | +* kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样 |
| 181 | + |
| 182 | +**提升service优先级** |
| 183 | + * 在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时适用于广播。 |
| 184 | + * 【结论】目前看来,priority这个属性貌似只适用于broadcast,对于Service来说可能无效 |
| 185 | + |
| 186 | +**提升service进程优先级** |
| 187 | + * Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收 |
| 188 | + * 当service运行在低内存的环境时,将会kill掉一些存在的进程。因此进程的优先级将会很重要,可以在startForeground()使用startForeground()将service放到前台状态。这样在低内存时被kill的几率会低一些。 |
| 189 | + * 【结论】如果在极度极度低内存的压力下,该service还是会被kill掉,并且不一定会restart() |
| 190 | + |
| 191 | +**onDestroy方法里重启service** |
| 192 | + * service +broadcast 方式,就是当service走ondestory()的时候,发送一个自定义的广播,当收到广播的时候,重新启动service |
| 193 | + * 也可以直接在onDestroy()里startService |
| 194 | + * 【结论】当使用类似口口管家等第三方应用或是在setting里-应用-强制停止时,APP进程可能就直接被干掉了,onDestroy方法都进不来,所以还是无法保证 |
| 195 | + |
| 196 | +**监听系统广播判断Service状态** |
| 197 | + * 通过系统的一些广播,比如:手机重启、界面唤醒、应用状态改变等等监听并捕获到,然后判断我们的Service是否还存活,别忘记加权限 |
| 198 | + * 【结论】这也能算是一种措施,不过感觉监听多了会导致Service很混乱,带来诸多不便 |
| 199 | + |
| 200 | +**在JNI层,用C代码fork一个进程出来** |
| 201 | + |
| 202 | +* 这样产生的进程,会被系统认为是两个不同的进程.但是Android5.0之后可能不行 |
| 203 | + |
| 204 | +**root之后放到system/app变成系统级应用** |
| 205 | + |
| 206 | +**大招: 放一个像素在前台(手机QQ)** |
147 | 207 |
|
148 | 208 | --- |
149 | 209 |
|
@@ -282,14 +342,14 @@ Android7.0新特性 |
282 | 342 |
|
283 | 343 | onStartCommand中回调了onStart,onStart中通过mServiceHandler发送消息到该handler的handleMessage中去。最后handleMessage中回调onHandleIntent(intent)。 |
284 | 344 |
|
285 | | -**ANR问题** |
286 | 345 |
|
287 | 346 | [ANR问题](https://github.com/GeniusVJR/LearningNotes/blob/master/Part1/Android/ANR问题.md) |
288 | 347 |
|
289 | 348 |
|
290 | 349 |
|
291 | 350 | **Handler机制** |
292 | 351 |
|
| 352 | + |
293 | 353 | **AsyncTask相关问题,3.0前后的bug,如何实现并发?底层实现原理?** |
294 | 354 |
|
295 | 355 | **Android的三级缓存如何实现** |
@@ -318,25 +378,29 @@ onStartCommand中回调了onStart,onStart中通过mServiceHandler发送消息 |
318 | 378 |
|
319 | 379 | **涉及动态加载技术点相关** |
320 | 380 |
|
321 | | -**Android内存泄漏** |
| 381 | +--- |
322 | 382 |
|
323 | 383 | [Android内存泄漏](https://github.com/GeniusVJR/LearningNotes/blob/master/Part1/Android/Android内存泄漏总结.md) |
324 | 384 |
|
325 | | -**Android中的性能优化** |
| 385 | +**** |
326 | 386 |
|
327 | | -[http://blog.csdn.net/codeemperor/article/details/51480671](http://blog.csdn.net/codeemperor/article/details/51480671) |
| 387 | +[Android中的性能优化](http://blog.csdn.net/codeemperor/article/details/51480671) |
| 388 | + |
| 389 | +--- |
328 | 390 |
|
329 | 391 | **Gradle** |
330 | 392 |
|
331 | 393 | 构建工具、Groovy语法、Java |
332 | 394 |
|
333 | 395 | Jar包里面只有代码,aar里面不光有代码还包括 |
334 | 396 |
|
| 397 | +--- |
| 398 | + |
335 | 399 | **你是如何自学Android** |
336 | 400 |
|
337 | 401 | 首先是看书和看视频敲代码,然后看大牛的博客,做一些项目,向github提交代码,觉得自己API掌握的不错之后,开始看进阶的书,以及看源码,看完源码学习到一些思想,开始自己造轮子,开始想代码的提升,比如设计模式,架构,重构等。 |
338 | 402 |
|
339 | | - |
| 403 | +--- |
340 | 404 |
|
341 | 405 |
|
342 | 406 |
|
0 commit comments