`
RandyWei
  • 浏览: 67093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android的手机任务管理器,关键功能实现方法总结

 
阅读更多

4.4.1 获取正在运行的程序:
    ActivityManager对象向系统取得ACTIVITY_SERVICE:
am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVIC    E);
    获取正在运行的进程列表:
List<RunningAppProcessInfo> list = am.getRunningAppProcesses();
通过RunningAppProcessInfo获取任务的详细信息:(将所有信息封装到一个类DetailProcess中)
1).获取ApplicationInfo
    获取所以安装了的程序,得到List<ApplicationInfo>:
PackageManager pm = Context().getPackageManager();
List<ApplicationInfo>  appList = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
    在通过程序名RunningAppProcessInfo .processName与appList中的ApplicationInfo .processName是否相符来获取此运行任务的ApplicationInfo。
2).获取PackageInfo
    pm.getPackageInfo(RunningAppProcessInfo.processName, PackageManag  er.GET_ACTIVITIES)
3).获取任务名:
    ApplicationInfo. loadLabel(pm).toString()
4).获取任务图标:
    ApplicationInfo .loadIcon(pm)
5).获取任务其他信息:
    通过在终端运行执行命令“ps”来获取当前所有任务的user 、 pid、ppid 、cmd 、mem等信息,mem即为物理内存大小,单位KB,cmd为processName。再通过RunningAppProcessInfo.processName筛选获取此任务的其他信息。
4.4.2 获取系统可用内存大小:
    ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryIn  fo();
    am.getMemoryInfo(outInfo);
    可用内存(String): Formatter.formatFileSize(getBaseContext(),outI nfo.availMem);
4.4.3获取用户安装的程序(供卸载):
    判定非系统程序:
    (ApplicationInfo.flags  & ApplicationIn-fo.FLAG_SYSTEM)<=0
    通过这个条件筛选List<ApplicationInfo>  appList中的非系统程序,然后列表显示相关信息。
4.4.4 获取Launcher程序列表(供定时选择用):
    Intent it = new Intent(Intent.ACTION_MAIN);
    it.addCategory(Intent.CATEGORY_LAUNCHER);
(在指定的intent中获取所有可能执行的activity列表,该函数通过获取飞信运行消息列表,放在intent中List<ResolveInfo>的形式,这是指该函数可以加标志位,该标志位可以有MATCH_DEFAULT_ONLY、GET_INTENT_FILTERS、GET_RESOLVED_FILTER三种形式)
    List<ResolveInfo> riList =pm.queryIntentActivities(it,0);
    获取Launcher图标:
        ResolveInfo .loadIcon(pm)
    获取Launcher名称:
        ResolveInfo .loadLabel(pm).toString()
    获取ComponentName:
    ActivityInfo ai = ResolveInfo.activityInfo;
    new ComponentName(ai.applicationInfo.packageName,ai.name)得到  ComponentName。
    ai.packageName得到packageName
4.4.5切换至选定程序方法:
    Intent intent = PackageManager.getLaunchIntentForPackage(Applicat  ionInfo.packageName);
    Context.startActivity(intent);
4.4.6结束任务方法:
    关闭应用程序的权限 :
    <uses-permission android:name="android.permission.RESTART_PACKAGE  S" />
API7及以下:
    ActivityManager. restartPackage(PackageName)
    (restartPackage会关掉于这个进程有关联的所有资源)
API8及以上:
    ActivityManager. killbackgroundprocesses
    (alarms会被关掉,service会重启,如果是用户可见的activity,将不会    被kill,该方法只能重启应用程序)
    另一种方法:forceStopPackage()
    使用Java反射调用:
    ActivityManager sd = (ActivityManager) this.getSystemService(ACTI  VITY_SERVICE);
    Method method = Class.forName("android.app.ActivityManager").getM  ethod("forceStopPackage", String.class);
    method.invoke(sd, "com.h3c.ServiceAuto");
    forceStopPackage并不能被第三方程序调用,只能随系统build。使用条件:
    1)权限:<uses-permission an-droid:name="android.permission.FORCE_STOP_PACKAGES"/>
    2)只能运行在系统进程:android:sharedUserId="android.uid.system"
    3)android.uid.system属性的进程 须要在android.mk里这样设置:
       LOCAL_CERTIFICATE := platform
4.4.7获取程序详细信息方法:
    Intent detailsIntent = new Intent();
    detailsIntent.setClassName("com.android.settings", com.android.se  ttings.InstalledAppDetails");
    detailsIntent.putExtra("com.android.settings.ApplicationPakgName", dp.getPackageName());
    Context.startActivity(detailsIntent);
4.4.8卸载程序方法:
    Uri uri = Uri.fromParts("package", PackageName, null);
    Intent it = new Intent(Intent.ACTION_DELETE, uri);
    Context.startActivity(it);
4.4.9排除列表实现:
    在列表选中排除任务后,将任务名(title)放入ArrayList<String> excludes,然后通过SharedPreferences简单保存:
    SharedPreferences sp = getSharedPreferences("excludes", Activity.  MODE_PRIVATE);
    sp.edit().putString(dp.getTitle(), dp.getTitle()).commit();
    每次开机启动时,读取sp内容(取key值)并添加进excludes:
    Map<String, ?> allexcludes = sp.getAll();
    Iterator<String> it = allexcludes.keySet().iterator();
    while(it.hasNext())
    {
      excludes.add(it.next());
    }
4.4.10任务定时结束实现:
    通过HashMap<String, String> closetimes存储设置了定时关闭程序的关闭时间,key=DetailProcess.title,value=DetailProcess.closetime。通过任务名来匹配关机时间。
    倒计时通过CountDownTimer (long millisInFuture, long countDownInterval)抽象方法来实现。
4.4.11 ListView每项自定义较复杂布局实现:
    对于ListView里面布局较复杂的情况,可以自定义一个继承自BaseAdapter的类,来逐条绘制ListView.
    继承BaseAdapter(抽象类)之后,需要重写以下四个方法:getCount,getItem,getItemId,getView。
     getItem和getItemId方法将会在调用ListView的响应方法的时候被调用到,这两个方法对于android来讲是没有用的,单纯是为了客户端调用的方便。所以我们可以返回任何对我们有用的值,而不需要顾及android对它们的使用(因为根本就没有使用)。
    getCount()获取Item的个数,必须。
    getView(final int position, View convertView, ViewGroup parent)方法根据getCount(),用来逐条绘制,每绘制一个Item就调用一次这个方法,必须。position表示将显示的是第几行,covertView是从布局文 件中inflate来的布局。
    在getView方法里可以为convertView添加各种监听事件。
    关于ListView自定义背景后滚动出现背景变黑的问题的解决方法:
    滚动时,列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919,要改变这种情况,只需要调用listView的setCacheColorHint(0),颜色值设置为0 。
    或者xml文件中listView的属性 Anroid:cacheColorHint="#00000000"即可,滚动时,重绘View的时候就不会有背景颜色。
4.4.12 定时任务实现:
    日期设定通过DatePickerDialog来设定,时间设定通过TimePickerDialog来设定。
    判定日期在当前日期或当前日期之后条件:
    year>=_date.get(Calendar.YEAR)
    | year>=_date.get(Calendar.YEAR)&&monthOfYear>=_date.get(Calendar. MONTH)
    | year>=_date.get(Calendar.YEAR)&&monthOfYear>=_date.get(Calendar. MONTH)&&dayOfMonth>=_date.get(Calendar.DAY_OF_MONTH)
    判定时间在当前时间之后条件:
    ((!(  getdata.equals("设置日期已过,请重新设置")  ))
        &&(!(getdata.equals(currentData))) ) 
    |  ((!(  getdata.equals("设置日期已过,请重新设置")  ))
    &&( (getdata.equals(currentData)))
    &&hourOfDay>_date.get(Calendar.HOUR_OF_DAY))  
    |  ((!(  getdata.equals("设置日期已过,请重新设置")  ))
    &&(  (getdata.equals(currentData)))             
    &&hourOfDay==_date.get(Calendar.HOUR_OF_DAY)                      &&minute>_date.get(Calendar.MINUTE))
    设置AlarmManager,对设置的时间到了做出相应的响应:
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM  _SERVICE);
    通过getSystemService获得AlarmManager使Activity关闭AlarmManager 仍执行。
    Intent intent = new Intent(TaskManager.this, TimeTaskReceiver.cla  ss);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(TaskMana  ger.this, 0,intent, 0);
    alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pe  ndingIntent);
    通过PendingIntent来发送广播,再定义一个BroadcastReceiver类来接受定时任务发送的广播,并在BroadcastReceiver里编写到时事件。
4.4.13 加载自定义布局:LayoutInflater
在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater。
LayoutInflater在Android中是“扩展”的意思,作用类似于findViewById(),不同的是LayoutInflater是用来获得布局文件对象的,而findViewById()是用来获得具体控件的。LayoutInflater经常在BaseAdapter的getView方法中用到,用来获取整个View并返回。
LayoutInflater的用法有三种:
第一种方法:
    LayoutInflater inflater = LayoutInflat-er.from(this);  
    View layout = inflater.inflate(R.layout.main, null); 
    LayoutInflater inflater = LayoutInflater.from(this);
    View layout = inflater.inflate(R.layout.main, null);
第二种方法:
    LayoutInflater inflater = getLayoutInflater();  
    View layout = inflater.inflate(R.layout.main, null); 
    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.main, null);
第三种方法:
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOU  T_INFLATER_SERVICE);  
    View layout = inflater.inflate(R.layout.main, null);

分享到:
评论

相关推荐

    基于android的任务管理器的设计说明.doc

    本文档详细介绍了基于Android的任务管理器的设计过程和实现功能,旨在解决Android系统原生不包含任务管理器的问题。 一、任务管理功能 在Android系统中,任务管理器的主要任务是显示当前正在运行的进程,以及提供...

    基于android-的任务管理器的设计-毕业论文.doc

    总结来说,基于Android的任务管理器是一个综合性的工具,它结合了任务、文件和内存管理,旨在帮助用户更好地掌握设备状态,提升设备性能,并确保系统安全。随着Android系统的广泛使用,这样的工具对于提升用户体验和...

    Android管理手机短信

    总结来说,实现“Android管理手机短信”涉及到以下几个关键技术点:1) 使用ContentResolver和SQLite数据库查询短信;2) 利用SwipeRefreshLayout实现ListView的下拉刷新;3) 使用Intent发送短信并处理权限;4) 设计...

    Android手机电子书阅读器的设计与实现设计项目说明书.doc

    总结,设计与实现Android手机电子书阅读器是一项涉及需求分析、系统设计、编码实现和测试优化的综合任务。通过不断迭代和改进,最终的目标是打造出一款功能齐全、用户友好的电子书阅读器,满足广大读者在移动设备上...

    android仓库管理系统源码

    本文将深入探讨一个基于Android的仓库管理系统源码,分析其核心功能和实现方式。 1. **系统架构** 一个完整的Android仓库管理系统通常采用MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)架构。这种...

    收藏的精品资料论文基于Android的大学图书管理系统的设计与实现.doc

    《基于Android的大学...总结来说,基于Android的大学图书管理系统通过结合现代技术与图书馆业务流程,实现了高效、智能化的图书管理。这不仅体现了Android平台的广泛应用潜力,也为其他类似服务提供了可借鉴的模式。

    android的网络管理设计和实现.doc

    总结来说,Android的网络管理设计与实现涉及到对整个Android架构的理解,以及如何在应用程序层面实现高效、安全的网络交互。通过对需求的分析和功能模块的设计,可以构建一个全面的手机网络管理平台,提供用户友好的...

    工作任务管理系统.docx

    《工作任务管理系统设计与实现》 在现代企业管理中,有效地跟踪和管理工作任务是提高工作效率的关键。传统的管理模式,如纸质记录、会议沟通或电子邮件交流,往往存在效率低、信息更新不及时、交互性差等问题。为...

    android Listview显示多任务下载效果

    总结来说,"android Listview显示多任务下载效果"这一主题涵盖了Android UI设计、多线程编程、数据适配器机制、用户交互以及网络下载等关键知识点。通过实现这样的功能,开发者不仅可以提升用户体验,也能深入理解...

    Android实现信号强度监听的方法

    在Android系统中,监听手机的信号强度是一项关键任务,尤其对于开发者来说,它可以帮助优化应用性能,提升用户体验。本篇文章将详细介绍如何在Android平台上实现对信号强度的实时监听。 首先,我们需要了解Android...

    参考文档-文档(基于Android平台的图书管理系统手机客户.zip

    总结来说,《基于Android平台的图书管理系统手机客户端》是Android开发实例的典范,它融合了Java编程、数据库操作、网络通信和用户体验设计等多个领域的知识。对于想要学习Android应用开发或者图书管理系统的开发者...

    基于android无线视频监控的设计与实现开题报告

    本系统主要由三个部分组成:Android手机客户端、流媒体服务器和视频服务器。 - **Android手机客户端**:负责采集视频图像并发送给视频服务器。 - **视频服务器**:接收来自客户端的视频数据,并使用H.264标准进行...

    Android内核驱动——电源管理

    总结,Android内核驱动中的电源管理是一项复杂而细致的工作,它涉及到系统多个层面的协同。理解并掌握这些知识对于优化Android设备的性能和续航至关重要,同时也是开发高效、节能应用的基础。通过不断学习和实践,...

    安卓Android源码——quitesleep手机电话功能软件.zip

    总结来说,"quitesleep"源码分析不仅是对一个具体应用的解剖,更是对Android电话功能实现的一次深入学习。通过对这个案例的研究,开发者可以掌握如何在Android平台上构建类似的电话管理工具,同时也能提升对系统架构...

    基于Android平台手机图形编辑软件的设计与实现

    ### 基于Android平台手机图形编辑软件的设计与实现 #### 摘要与背景 随着移动通信技术和网络技术的迅速发展,手机系统经历了巨大的变革,从最初仅具备简单通话功能的非智能手机到如今集成了互联网浏览、即时通讯、...

    Android后台拍照功能

    总结来说,实现Android后台拍照功能需要深入理解Android服务、权限管理、相机API以及图片处理等相关知识,同时要关注用户体验和系统性能的平衡。在开发过程中,还需考虑不同Android版本的兼容性和功耗问题。

    android 手机 成功连接到互联网

    ### Android手机成功连接到互联网:实现方法与代码解析 在Android开发中,检查设备是否成功连接到互联网是一项基本且重要的功能。本篇文章将基于提供的代码片段来深入探讨如何实现这一功能,并详细介绍其中涉及的...

    Android通讯录实现字母索引

    总结,实现"Android通讯录实现字母索引"涉及到的关键技术有:ListView/RecyclerView的使用、Adapter的适配、数据查询与处理、事件监听、UI布局设计、性能优化以及权限管理。通过这些知识点的学习和实践,你可以构建...

Global site tag (gtag.js) - Google Analytics