Android
1、10个基本简单的linux
mkdir 创建文件夹
rmdir 删除文件夹
rm 删除文件
touch 创建文件
cat 查看文件
find查找目录
mv 移动(修改)文件
cp 拷贝文件
cd 切换当前目录
tail 查看文件尾部
ls 列出文件清单
reboot重启
ps 查看系统进程
2、adb命令
adb device 查看连接计算机的设备
adb reboot 重启设备
adb reboot bootloader 刷机模式
adb logcat 查看log
adb kill-server 终止进程服务
adb start-server 重启进程服务
adb install xxx.apk安装apk
adb unstall xxx.apk 卸载apk
adb connect ip地址 连接设备
adb shell kill [pid] 杀死进程
adb shell ps 查看进程
adb shell ls 列出目录下的文件夹
adb logcat -c 清除log缓存
3、ANR(Application not Responding) 如何避免?
将耗时的操作,比如:访问网络、Socker通信、大量查询SQL语句都放到子线程中去,通过handle.sendMessage、runonUITread、AsyncTask等方式更新UI。
4、一条最长的短信息约占多少个byte?
国内三大运营商通常情况下中文70、英文160个。包括标点
5、如何判断是否有SD卡:Environment.getExternalStorageState().equals(MEDIA_MOUNTED)
6、Android程序与Java程序的区别:Android程序用android sdk开发,java程序用 java sdk开发。Android程序引用了大部分的Java SDK.
7、启动应用后,改变系统语言,应用的语言会改变么
一般是不会的,只有重启应用才能改变应用语言,除非应用做了国际化处理。
8、介绍下adb、ddms、aapt的作用:
adb:(Android debug bridge)Android调试桥
ddms:(Dalvik DeBug Monitor Service)程序执行查看器(dalvik调试监视服务)
aapt:Android sdk中提供的一个小工具:可以查看、创建、更新ZIP格式的文档附件
9、ddms和traceview的区别:ddms是一个程序执行查看器,在里面可以看见线程和堆栈等信息,traceview是程序性能分析器。
PS:traceview是Android平台特有的数据采集和分析工具。
10、Activity:四大组件之一,是Context的子类,通常一个用户交互界面对应一个activity。
Activity的生命周期:
onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy() 、onRestart()
保存Activity的状态:
重写onSaveInstanceState()方法,接受一个Bundle类型的参数,可以将状态存储到Bundle对象中,当重启activity调用它onCreate()方法时,Bundle将作为实参传递给onCreate()
横竖屏切换时Activity的生命周期:
不设置Activity的android:configChanges时,切屏会重新调用各个生命周期。切横屏会执行一次,竖屏两次
设置android:configChanges=“orientation”时,切屏也还会调用各个生命周期,切横、竖屏时只会执行一次
设置android:configChanges=“orientation|keyboardHidden”时,不会重新调用各个生命周期,只会执行onConfigurationChanged方法
将Activity设置成窗口的样式:
在Manifest中将主题设置成Dialog样式
如何退出Activity?如何安全退出已调用多个Activity的Application?
(1) 一般情况下,用户按back键就可以退出Activity,直接调用finish().
(2) 记录打开的activity,每打开一个就记录下来,在需要退出的时候,关闭每一个activity即可
(3) 发送特定广播,在需要退出的时候,发送一个特定的广播,每个Activity收到广播的时候,关闭即可。
(4)在打开新的Activity时候,使用startActivityforresult,在onActivityResult中处理,递归关闭。
Activity的四种启动模式:
standard:每启动一次都要创建新的实例,不管实例有没有存在。
singleTop:栈顶复用,若在栈顶就不生成新的实例,如果在栈顶就调用onNewIntent复用
singleTask:栈内复用,只要存在栈内就不创建新的实例
singleInstance:单例模式,系统会给该Activity单独创建一个栈
11、Service:四大组件之一
Service是否在main thread中执行,service里是否能执行耗时操作?
默认情况下,service和activity是运行在当前app所在进程的main thread里面,service里面不能执行耗时的操作。特殊情况下,可以在清单文件配置service执行所在的进程,让service在另外进程中执行。
Activity如何绑定service,如何在Activity中启动自己对应的Service?
Activity通过bindService(Intent service,ServiceConnection conn,int flags)跟service绑定,,当绑定成功后service会将代理对象通过回调的形式传给conn,就能拿到Service提供的服务代理对象。
在Activity中通过startService()和bindService()来启动服务,想要获取Service服务对象就通过bindService,若仅仅想要开启一个后台服务,就是要startService()
StartService启动服务,调用者和服务之间没有关联,如果是调用者直接退出没有调用stopService的话,Service一直在后台运行,用BindService启动服务,调用者和服务绑定了,调用者一旦退出,Service也就终止。
Service生命周期:
非绑定模式:onCreate()、onStartCommand()、onDestroy()
绑定模式:onCreate()、onBind()、onUnbind()、onDestroy()
什么是IntentService,有何有点?
IntentService是Service的子类,可以根据需要处理异步请求(表示为Intent)。
Actiivty、Service、Intent的关系:
Activity和Service都是四大组件,都是Context的子类ContextWrapper的子类,Activity负责用户界面的交互和显示,Service负责后台任务的处理,Activity和Service通过Intent传递数据,Intent可看成是通信使者。
12、BroadCastReceiver :四大组件之一,主要用于接收系统或app发送的广播事件。可以进行进程间通信
分为有序广播和无序广播:
无序广播:完全异步,可以被所有广播接收者收到,效率高,但是无法将处理结果传给下个接收者,没有顺序,无法被截断。
有序广播:同步执行的广播,广播发出后同一时间只能有一个广播接收器接收到广播,当优先级高的广播接收器的onReceiver方式运行结束后,广播才会继续,当前广播也可以截断广播,不继续向下传递。
引用广播的用意:
(1)程序间的互通消息
(2)Android的四大组件本质上也就是为了实现移动设备上的MVC架构,可以方便几大组件的信息和数据交互
注册广播的两种方式:
静态注册:在清单文件中为BroadcastReceiver注册,使用<receiver>标签声明,并在标签内<Intent-filter>标签设置过滤器。声明周期伴随整个应用。=>常驻型广播,应用程序关闭后还是会收到广播
动态注册:在代码中定义并设置好IntentFilter对象,然后在需要注册的地方调用Context.registerReceiver()方法,调用Context.unregisterReceiver()方法取消注册。=>非常驻型广播,跟随Activity生命周期,当程序关闭时,该接收器会被销毁
PS:
BroadcastReceiver生命周期很短,从接收广播创建到onRecrive()方法结束后销毁。
广播接收者中不要做一些耗时操作,会弹出ANR
耗时较长的工作最好在服务中完成
13、ContentProvider:四大组件之一,应用程序之间共享数据的接口
使用方法:自定义一个类继承ContentProvider,然后覆写query、insert、u

这篇博客详述了Android开发的基础知识,包括常用Linux命令、ADB工具的使用、避免ANR的方法、内存性能分析、事件处理机制、多线程与异步加载、设计模式在Android中的应用,以及Android系统架构和关键组件的理解。同时,还探讨了Android的布局优化、性能优化策略和关键数据结构与算法。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



