是想做论坛的手机客户端吧,手下你先做前端,参考各个流行的论坛架构,也可以去安卓巴士和eoe论坛上卖弄找源码,应该可以找的到,逛论坛的时候看见过。然后就是需要架设服务器,配置服务器什么的是很大一块,前端设计够你做很长时间的了,服务器的话配置你上网找找,数据库软件最好用或者最新的都可以。
建议在eclipse上面做界面,然后再写类的代码,吧前端做完了以后涉及到通信方面的就该去架设服务器了。一个人你是肯定搞不完的,要是一个团队的话,最少要三个人,一个程序员也就是前端,一个美工,一个做数据库和服务器的。
描述不清楚啊,这是所有的权限
---------------------
访问登记属性 androidpermissionACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限
获取错略位置 androidpermissionACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米
获取精确位置 androidpermissionACCESS_FINE_LOCATION,通过GPS芯片接收卫星的定位信息,定位精度达10米以内
访问定位额外命令 androidpermissionACCESS_LOCATION_EXTRA_COMMANDS,允许程序访问额外的定位提供者指令
获取模拟定位信息 androidpermissionACCESS_MOCK_LOCATION,获取模拟定位信息,一般用于帮助开发者调试应用
获取网络状态 androidpermissionACCESS_NETWORK_STATE,获取网络信息状态,如当前的网络连接是否有效
访问Surface Flinger androidpermissionACCESS_SURFACE_FLINGER,Android平台上底层的图形显示支持,一般用于游戏或照相机预览界面和底层模式的屏幕截图
获取WiFi状态 androidpermissionACCESS_WIFI_STATE,获取当前WiFi接入的状态以及WLAN热点的信息
账户管理 androidpermissionACCOUNT_MANAGER,获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限
验证账户 androidpermissionAUTHENTICATE_ACCOUNTS,允许一个程序通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息
电量统计 androidpermissionBATTERY_STATS,获取电池电量统计信息
绑定小插件 androidpermissionBIND_APPWIDGET,允许一个程序告诉appWidget服务需要访问小插件的数据库,只有非常少的应用才用到此权限
绑定设备管理 androidpermissionBIND_DEVICE_ADMIN,请求系统管理员接收者receiver,只有系统才能使用
绑定输入法 androidpermissionBIND_INPUT_METHOD ,请求InputMethodService服务,只有系统才能使用
绑定RemoteView androidpermissionBIND_REMOTEVIEWS,必须通过RemoteViewsService服务来请求,只有系统才能用
绑定壁纸 androidpermissionBIND_WALLPAPER,必须通过WallpaperService服务来请求,只有系统才能用
使用蓝牙 androidpermissionBLUETOOTH,允许程序连接配对过的蓝牙设备
蓝牙管理 androidpermissionBLUETOOTH_ADMIN,允许程序进行发现和配对新的蓝牙设备
变成砖头 androidpermissionBRICK,能够禁用手机,非常危险,顾名思义就是让手机变成砖头
应用删除时广播 androidpermissionBROADCAST_PACKAGE_REMOVED,当一个应用在删除时触发一个广播
收到短信时广播 androidpermissionBROADCAST_SMS,当收到短信时触发一个广播
连续广播 androidpermissionBROADCAST_STICKY,允许一个程序收到广播后快速收到下一个广播
WAP PUSH广播 androidpermissionBROADCAST_WAP_PUSH,WAP PUSH服务收到后触发一个广播
拨打电话 androidpermissionCALL_PHONE,允许程序从非系统拨号器里输入电话号码
通话权限 androidpermissionCALL_PRIVILEGED,允许程序拨打电话,替换系统的拨号器界面
拍照权限 androidpermissionCAMERA,允许访问摄像头进行拍照
改变组件状态 androidpermissionCHANGE_COMPONENT_ENABLED_STATE,改变组件是否启用状态
改变配置 androidpermissionCHANGE_CONFIGURATION,允许当前应用改变配置,如定位
改变网络状态 androidpermissionCHANGE_NETWORK_STATE,改变网络状态如是否能联网
改变WiFi多播状态 androidpermissionCHANGE_WIFI_MULTICAST_STATE,改变WiFi多播状态
改变WiFi状态 androidpermissionCHANGE_WIFI_STATE,改变WiFi状态
清除应用缓存 androidpermissionCLEAR_APP_CACHE,清除应用缓存
清除用户数据 androidpermissionCLEAR_APP_USER_DATA,清除应用的用户数据
底层访问权限 androidpermissionCWJ_GROUP,允许CWJ账户组访问底层信息
手机优化大师扩展权限 androidpermissionCELL_PHONE_MASTER_EX,手机优化大师扩展权限
控制定位更新 androidpermissionCONTROL_LOCATION_UPDATES,允许获得移动网络定位信息改变
删除缓存文件 androidpermissionDELETE_CACHE_FILES,允许应用删除缓存文件
删除应用 androidpermissionDELETE_PACKAGES,允许程序删除应用
电源管理 androidpermissionDEVICE_POWER,允许访问底层电源管理
应用诊断 androidpermissionDIAGNOSTIC,允许程序到RW到诊断资源
禁用键盘锁 androidpermissionDISABLE_KEYGUARD,允许程序禁用键盘锁
转存系统信息 androidpermissionDUMP,允许程序获取系统dump信息从系统服务
状态栏控制 androidpermissionEXPAND_STATUS_BAR,允许程序扩展或收缩状态栏
工厂测试模式 androidpermissionFACTORY_TEST,允许程序运行工厂测试模式
使用闪光灯 androidpermissionFLASHLIGHT,允许访问闪光灯
强制后退 androidpermissionFORCE_BACK,允许程序强制使用back后退按键,无论Activity是否在顶层
访问账户Gmail列表 androidpermissionGET_ACCOUNTS,访问GMail账户列表
获取应用大小 androidpermissionGET_PACKAGE_SIZE,获取应用的文件大小
获取任务信息 androidpermissionGET_TASKS,允许程序获取当前或最近运行的应用
允许全局搜索 androidpermissionGLOBAL_SEARCH,允许程序使用全局搜索功能
硬件测试 androidpermissionHARDWARE_TEST,访问硬件辅助设备,用于硬件测试
注射事件 androidpermissionINJECT_EVENTS,允许访问本程序的底层事件,获取按键、轨迹球的事件流
安装定位提供 androidpermissionINSTALL_LOCATION_PROVIDER,安装定位提供
安装应用程序 androidpermissionINSTALL_PACKAGES,允许程序安装应用
内部系统窗口 androidpermissionINTERNAL_SYSTEM_WINDOW,允许程序打开内部窗口,不对第三方应用程序开放此权限
访问网络 androidpermissionINTERNET,访问网络连接,可能产生GPRS流量
结束后台进程 androidpermissionKILL_BACKGROUND_PROCESSES,允许程序调用killBackgroundProcesses(String)方法结束后台进程
管理账户 androidpermissionMANAGE_ACCOUNTS,允许程序管理AccountManager中的账户列表
管理程序引用 androidpermissionMANAGE_APP_TOKENS,管理创建、摧毁、Z轴顺序,仅用于系统
高级权限 androidpermissionMTWEAK_USER,允许mTweak用户访问高级系统权限
社区权限 androidpermissionMTWEAK_FORUM,允许使用mTweak社区权限
软格式化 androidpermissionMASTER_CLEAR,允许程序执行软格式化,删除系统配置信息
修改声音设置 androidpermissionMODIFY_AUDIO_SETTINGS,修改声音设置信息
修改电话状态 androidpermissionMODIFY_PHONE_STATE,修改电话状态,如飞行模式,但不包含替换系统拨号器界面
格式化文件系统 androidpermissionMOUNT_FORMAT_FILESYSTEMS,格式化可移动文件系统,比如格式化清空SD卡
挂载文件系统 androidpermissionMOUNT_UNMOUNT_FILESYSTEMS,挂载、反挂载外部文件系统
允许NFC通讯 androidpermissionNFC,允许程序执行NFC近距离通讯 *** 作,用于移动支持
永久Activity androidpermissionPERSISTENT_ACTIVITY,创建一个永久的Activity,该功能标记为将来将被移除
处理拨出电话 androidpermissionPROCESS_OUTGOING_CALLS,允许程序监视,修改或放弃播出电话
读取日程提醒 androidpermissionREAD_CALENDAR,允许程序读取用户的日程信息
读取联系人 androidpermissionREAD_CONTACTS,允许应用访问联系人通讯录信息
屏幕截图 androidpermissionREAD_FRAME_BUFFER,读取帧缓存用于屏幕截图
读取收藏夹和历史记录 comandroidbrowserpermissionREAD_HISTORY_BOOKMARKS,读取浏览器收藏夹和历史记录
读取输入状态 androidpermissionREAD_INPUT_STATE,读取当前键的输入状态,仅用于系统
读取系统日志 androidpermissionREAD_LOGS,读取系统底层日志
读取电话状态 androidpermissionREAD_PHONE_STATE,访问电话状态
读取短信内容 androidpermissionREAD_SMS,读取短信内容
读取同步设置 androidpermissionREAD_SYNC_SETTINGS,读取同步设置,读取Google在线同步设置
读取同步状态 androidpermissionREAD_SYNC_STATS,读取同步状态,获得Google在线同步状态
重启设备 androidpermissionREBOOT,允许程序重新启动设备
开机自动允许 androidpermissionRECEIVE_BOOT_COMPLETED,允许程序开机自动运行
接收彩信 androidpermissionRECEIVE_MMS,接收彩信
接收短信 androidpermissionRECEIVE_SMS,接收短信
接收Wap Push androidpermissionRECEIVE_WAP_PUSH,接收WAP PUSH信息
录音 androidpermissionRECORD_AUDIO,录制声音通过手机或耳机的麦克
排序系统任务 androidpermissionREORDER_TASKS,重新排序系统Z轴运行中的任务
结束系统任务 androidpermissionRESTART_PACKAGES,结束任务通过restartPackage(String)方法,该方式将在外来放弃
发送短信 androidpermissionSEND_SMS,发送短信
设置Activity观察其 androidpermissionSET_ACTIVITY_WATCHER,设置Activity观察器一般用于monkey测试
设置闹铃提醒 comandroidalarmpermissionSET_ALARM,设置闹铃提醒
设置总是退出 androidpermissionSET_ALWAYS_FINISH,设置程序在后台是否总是退出
设置动画缩放 androidpermissionSET_ANIMATION_SCALE,设置全局动画缩放
设置调试程序 androidpermissionSET_DEBUG_APP,设置调试程序,一般用于开发
设置屏幕方向 androidpermissionSET_ORIENTATION,设置屏幕方向为横屏或标准方式显示,不用于普通应用
设置应用参数 androidpermissionSET_PREFERRED_APPLICATIONS,设置应用的参数,已不再工作具体查看addPackageToPreferred(String) 介绍
设置进程限制 androidpermissionSET_PROCESS_LIMIT,允许程序设置最大的进程数量的限制
设置系统时间 androidpermissionSET_TIME,设置系统时间
设置系统时区 androidpermissionSET_TIME_ZONE,设置系统时区
设置桌面壁纸 androidpermissionSET_WALLPAPER,设置桌面壁纸
设置壁纸建议 androidpermissionSET_WALLPAPER_HINTS,设置壁纸建议
发送永久进程信号 androidpermissionSIGNAL_PERSISTENT_PROCESSES,发送一个永久的进程信号
状态栏控制 androidpermissionSTATUS_BAR,允许程序打开、关闭、禁用状态栏
访问订阅内容 androidpermissionSUBSCRIBED_FEEDS_READ,访问订阅信息的数据库
写入订阅内容 androidpermissionSUBSCRIBED_FEEDS_WRITE,写入或修改订阅内容的数据库
显示系统窗口 androidpermissionSYSTEM_ALERT_WINDOW,显示系统窗口
更新设备状态 androidpermissionUPDATE_DEVICE_STATS,更新设备状态
使用证书 androidpermissionUSE_CREDENTIALS,允许程序请求验证从AccountManager
使用SIP视频 androidpermissionUSE_SIP,允许程序使用SIP视频服务
使用振动 androidpermissionVIBRATE,允许振动
唤醒锁定 androidpermissionWAKE_LOCK,允许程序在手机屏幕关闭后后台进程仍然运行
写入GPRS接入点设置 androidpermissionWRITE_APN_SETTINGS,写入网络GPRS接入点设置
写入日程提醒 androidpermissionWRITE_CALENDAR,写入日程,但不可读取
写入联系人 androidpermissionWRITE_CONTACTS,写入联系人,但不可读取
写入外部存储 androidpermissionWRITE_EXTERNAL_STORAGE,允许程序写入外部存储,如SD卡上写文件
写入Google地图数据 androidpermissionWRITE_GSERVICES,允许程序写入Google Map服务数据
写入收藏夹和历史记录 comandroidbrowserpermissionWRITE_HISTORY_BOOKMARKS,写入浏览器历史记录或收藏夹,但不可读取
读写系统敏感设置 androidpermissionWRITE_SECURE_SETTINGS,允许程序读写系统安全敏感的设置项
读写系统设置 androidpermissionWRITE_SETTINGS,允许读写系统设置项
编写短信 androidpermissionWRITE_SMS,允许编写短信
写入在线同步设置 androidpermissionWRITE_SYNC_SETTINGS,写入Google在线同步设置
本文源码解析基于Glide 461
系列文章
Android 手撕Glide--Glide缓存机制
Android 手撕Glide--Glide缓存机制(面试)
Android 手撕Glide--Glide是如何关联生命周期的?
Glide缓存分为内存缓存和磁盘缓存,其中内存缓存是由弱引用+LruCache组成。
取的顺序是:弱引用、LruCache、磁盘
存的顺序是:磁盘、弱引用、LruCache
这张亲手制作的,方便大家更直观的理解缓存机制的整体流程,结合文末总结效果更佳。喜欢的记得点赞!
概述
1、弱引用是由这样一个HashMap维护,key是缓存的key,这个key由url、width、height等10来个参数组成;value是资源对象的弱引用形式。
2、LruCache是由一个LinkedHashMap维护,根据Lru算法来管理。大致的原理是利用linkHashMap链表的特性,把最近使用过的文件插入到列表头部,没使用的放在尾部;然后当大小到达预先设置的一个阀值的时候 ,按算法删除列表尾部的部分数据。由于篇幅有限,这里不讲解LruCache和DiskLruCache的底层原理,这里推荐一篇 图解LinkedHashMap原理
这是Glide自定义的LruCache
存取原理
取数据
在内存缓存中有一个概念叫引用计数器 ,具体来说是在 EngineResource 中定义一个 acquired 变量用来记录被引用的次数,调用 acquire() 方法会让变量加1,调用 release() 方法会让变量减1。
获取资源是先从弱引用取缓存,拿到的话,引用计数+1;没有的话从LruCache中拿缓存,拿到的话,引用计数也是+1,同时把从LruCache缓存转移到弱应用缓存池中;再没有的话就通过 EngineJob 开启线程池去加载,拿到的话,引用计数也是+1,会把放到弱引用。
存数据
很明显,这是加载之后的事情。通过 EngineJob 开启线程池去加载,取到数据之后,会回调到主线程,把存到弱引用。当不再使用的时候,比如说暂停请求或者加载完毕或者清除资源时,就会将其从弱引用中转移到 LruCache 缓存池中。 总结一下,就是正在使用中的使用 弱引用 来进行缓存,暂时不用的使用 LruCache 来进行缓存的功能;同一张只会出现在 弱引用 和 LruCache 中的一个。
为什么要引入软引用?
1、分压策略,减少Lrucache 中 trimToSize 的概率。如果正在remove的是张大图,lrucache正好处在临界点,此时remove *** 作,将延缓Lrucache的 trimToSize *** 作;
2 提高效率:弱引用用的是 HashMap ,Lrucache用的是 LinkedHashMap ,从访问效率而言,肯定是 HashMap 更高。
Glide磁盘缓存策略(4x)
如果在内存缓存中没获取到数据会通过 EngineJob 开启线程池去加载,这里有2个关键类: DecodeJob 和 EngineJob 。 EngineJob 内部维护了线程池,用来管理资源加载,当资源加载完毕的时候通知回调; DecodeJob 是线程池中的一个任务。
磁盘缓存是通过 DiskLruCache 来管理的,根据缓存策略,会有2种类型的, DATA (原始)和 RESOURCE (转换后的)。磁盘缓存依次通过 ResourcesCacheGenerator 、 SourceGenerator 、 DataCacheGenerator 来获取缓存数据。 ResourcesCacheGenerator 获取的是转换过的缓存数据; SourceGenerator 获取的是未经转换的原始的缓存数据; DataCacheGenerator 是通过网络获取数据再按照按照缓存策略的不同去缓存不同的到磁盘上。
Glide缓存分为 弱引用+ LruCache+ DiskLruCache ,其中读取数据的顺序是:弱引用 > LruCache > DiskLruCache>网络;写入缓存的顺序是:网络 --> DiskLruCache--> LruCache-->弱引用
内存缓存分为弱引用的和 LruCache ,其中正在使用的使用弱引用缓存,暂时不使用的用 LruCache缓存,这一点是通过 引用计数器(acquired变量)来实现的,详情可以看内存缓存的小结。
磁盘缓存就是通过DiskLruCache实现的,根据缓存策略的不同会获取到不同类型的缓存。它的逻辑是:先从转换后的缓存中取;没有的话再从原始的(没有转换过的)缓存中拿数据;再没有的话就从网络加载数据,获取到数据之后,再依次缓存到磁盘和弱引用。
参考:
面试官:简历上最好不要写Glide,不是问源码那么简单
原来面试的时候写精通Glide,这样问我这样答
Android应用程序,如果在应用管理中清除了缓存,则应用中会显示000B,这个数值就是程序的缓存大小。用户不需要处理。
如果手机手存不够,或者用久了卡,,可以执行wipe(双清) *** 作,wipe会删除手机所有设置和所有已安装程序及相关文件,恢复到出厂设置,就是刚拿到手机的原始状态。
双wipe步骤如下:
1关机 按HOME键+电源键进入recovery模式。
2用音量下键选择wipe data/factory reset这项。
3按HOME键执行wipe data/factory reset命令后再用音量下键选择Yes -- delete all user data并按HOME键执行命令。
4执行Yes -- delete all user data命令后,表示开始执行。
5按音量下键选择wipe cache partition命令并按HOME键执行。
6执行wipe cache partition命令后,音量下键选择Yes -- Wipe Cache并按HOME键执行命令。
7执行Yes -- Wipe Cache命令后,表示wipe cache partition也执行成功了。
wipe data/factory reset和wipe cache partition执行成功后 选择 reboot system now 重启系统即可。
Android中提供的缓存机制是利用本地存储实现的。
(1)新下载数据的时候,将数据缓存到本地。
(2)再次下载之前,先判定该资源是否已经被缓存,如果是,则优先使用本地资源;如果没有被缓存,则凑个网络上下载资源,并进行缓存。
实际上使用缓存机制的时候,还要考虑到额外的两个条件:空间和时间。
对于存储空间的条件限制,处理方法一般是结合应用下载量大小和用户选择来确定,比如以缓存文本为主的应用,由于文本本身占用极小的空间,其缓存大小可以根据用户的磁盘空间大小来确定;以缓存为主应用,由于占用空间较大,更加需要用户参与指定空间大小。
对于时间的限制,可以通过设定缓存的过期时间来实现,为下载到缓存的数据设定时间戳,在读取该缓存的时候,比较时间戳,超过时间限制的则需要更新该缓存。
在清空应用缓存的时候也需要谨慎,在存储空间已满,用户注销的时候可以考虑清空该用户的整个缓存,而在普通升级应用的情况下并不需要清空整个缓存。
最近在负责一个项目,需要获取其他应用的内部存储中的文件,即data/data/下的文件,并转存到sdcard上。有一点Android基础的都知道data/data/中的文件对其他应用是不可见的,在没有源码的条件下,无法直接访问data/data中的文件。问了公司的大佬,大佬提供了两种思路,一种是run-as命令进入data/data,直接copy;另一种是hook。具体怎么实施,且听我慢慢道来。
安装包是debug包(release包也可以利用反编译重新打包,变成debug包,网上有很多文章可以参考)
1、连接手机到电脑,打开usb调试
2、命令行中输入 adb shell run-as <包名>
示例:
comssandroidugcaweme(抖音)不是debug包,无法使用run-as命令。
comexampleyilialinjsonreport(我自己写的app)是debug包,使用run-as命令可以进入data/data目录下,输入 ls ,可以看到data/data目录下的所有文件/文件夹
3、输入 cat <文件名> > <sdcard中的文件名> ,直接拷贝到sdcard中
示例:
不出现任何提示,表明已经成功拷贝到了sdcard中。
几行命令直接搞定
1、需要手工敲命令,难以实现自动化
2、debug包才能使用
没有限制,安装包是release包或者debug包都可以,手机不需要root
有关于xposed插件可以参考文章:>
以上就是关于在android系统中如何实现开发论坛应用_android开发教程全部的内容,包括:在android系统中如何实现开发论坛应用_android开发教程、android中这两个权限起什么作用、Android 【手撕Glide】--Glide缓存机制(面试)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)