如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
来源:互联网 发布:spycall软件 编辑:程序博客网 时间:2024/05/18 02:59
一、开机启动
很多手机软件具备开机启动的功能,有时候让软件开机启动会非常实用。那么是如何实现开机启动的呢?通过查找我们了解到开机后系统会发送一个启动完毕的广播,Intent.ACTION_BOOT_COMPLETED,那么我们只需要自定义一个BroadcastReciever接收这个广播,在接收到广播后启动我们的程序就可以实现开机启动了。
以本程序中的MyBroadcastReceiver为例:
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_BOOT_COMPLETED)) { // 是否选择了开机启动 boolean start = PreferenceManager.getDefaultSharedPreferences( context).getBoolean( CleanerActivity.KEY_START_WHEN_BOOT_COMPLETED, true); if (start) { Intent i = new Intent(); i.setClass(context, FloatService.class); context.startService(i); } } }}
AndroidManifest.xml中的声明如下:
<receiver android:name="MyBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter></receiver>
二、清除缓存
在Android中Settings的源码中使用了PackageManager的deleteApplicationCacheFiles()方法清除缓存,但是作为第三方软件使用这个函数难度很大,我们在PackageManager中还发现freeStorageAndNotify()方法亦可实现清除缓存,而且第三方软件使用时难度相对较小。因此,我们使用freeStorageAndNotify()方法来实现缓存的清理。
使用freeStorageAndNotify()时需要在AndroidManifest.xml中声明permission
<!-- 清除缓存时需要此权限 --><uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
该函数的具体使用可以参考源码MyFloatView.java中的clearCache()函数。
三、杀进程
在ActivityManager.java中为我们提供了killBackgroundProcesses(String packageName)函数来杀死进程具体如何杀死进程可以参考源码MyFloatView.java中的killBackgroundProcess()函数。杀进程需要在AndroidManifest中声明如下权限
<!-- 杀死进程时需要该权限 --><uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
四、悬浮窗口的单双击
网上有很多实现悬浮窗口的教程,但是很少有人实现悬浮窗口的单击和双击事件。在本程序中我们通过添加标志位、记录用户点击悬浮窗口时的时间、单击和双击的响应使用多线程(使用Timer和TimerTask)等方式来判断单击和双击。在MyFloatView.java中的onTouchEvent()函数中对单双击进行判断。
区分单双击,是通过判断两次单击的间隔来实现的。单击事件的相应线程在执行前先进行一定时间的休眠等待判断是否为双击,根据标志位判断执行是否执行单击响应线程的函数。
五、统计RAM可用内存大小
A:Android中的MemInfoReader类通过读取/proc/meminfo实现了内存大小相关的函数,但第三方程序无法调用,我们将直接将MemInfoReader.java直接拷贝到项目中,作适当修改即可使用。
B:通过MemoryInfo和ActivityManager获得可用Ram内存大小
ActivityManager am = (ActivityManager) this .getSystemService(Context.ACTIVITY_SERVICE); MemoryInfo mi = new MemoryInfo(); am.getMemoryInfo(mi); // mi.availMem; 当前系统的可用内存 Log.e("tag", "getMemoryInfo: " + mi.availMem);
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- -----------如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- android 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,源码已上传到CSDN
- android如何实现悬浮窗口
- android 类似360悬浮窗口实现源码
- 如何实现开机启动
- Qt 区分单双击事件
- Qt 区分单双击事件
- 如何实现Android中悬浮窗口
- 如何实现手机中应用程序的开机自启动,附源代码
- PYQT 实现TabWidget 双击关闭功能 (附源码)
- 如何实现开机自启动?
- 如何使守护进程开机启动
- android源码分析之windowmanager (android悬浮窗口的实现)
- A::A();
- Android 游戏开发之View框架
- linux命令总结
- 我国将开展第一次全国可移动文物普查-可移动文物-普查
- GIS理论(墨卡托投影、地理坐标系、地面分辨率、地图比例尺、Bing Maps Tile System)
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码
- jQuery EasyUI 学习资料
- 数论中的一些性质
- HTTP协议
- JDBC连接SQLServer时出现错误Error establishing socket.的解决。
- php_Beautifier格式化你的PHP代码
- iPhone开发【三】处理基本交互
- 总结零散的小知识
- UNIX常用命令个人总结