82进程清理widget逻辑的实现
来源:互联网 发布:sql查询分析器在哪 编辑:程序博客网 时间:2024/05/22 07:50
我们需要实现的是:
桌面widget三秒钟更新一下进程个数和可用内存的信息,然后点击“一键清理”按钮的时候,清理后台进程。
第一步:
更新桌面widget,由于在后台执行任务,所以,由service完成,在service中使用Timer和TimerTask一起来完成三秒钟更新一次的任务。
第二步:
那么在MyWidget什么时候启用这个服务呢?
package com.ustc.mobilemanager.widget;import com.ustc.mobilemanager.service.UpdateWidgetService;import android.appwidget.AppWidgetManager;import android.appwidget.AppWidgetProvider;import android.content.Context;import android.content.Intent;/** * * 最短的更新时间为半小时 * * @author * */public class MyWidget extends AppWidgetProvider {@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("onReceive");super.onReceive(context, intent);}@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {System.out.println("onUpdate");//修改从设置那里杀死UpdateWidgetService的BUGIntent intent = new Intent(context, UpdateWidgetService.class);context.startService(intent);super.onUpdate(context, appWidgetManager, appWidgetIds);}@Overridepublic void onEnabled(Context context) {System.out.println("onEnabled");Intent intent = new Intent(context, UpdateWidgetService.class);context.startService(intent);super.onEnabled(context);}@Overridepublic void onDisabled(Context context) {System.out.println("onDisabled");Intent intent = new Intent(context, UpdateWidgetService.class);context.stopService(intent);super.onDisabled(context);}}
观察Log的打印,我们选择在onEnabled中启用服务,在onDisabled停止服务。
第四步:
设置两个文本的值:
// 设置更新的组件ComponentName provider = new ComponentName(UpdateWidgetService.this, MyWidget.class);// A class that describes a view hierarchy that can be displayed// in another process. The hierarchy is inflated from a layout// resource file, and this class provides some basic operations// for modifying the content of the inflated hierarchyRemoteViews views = new RemoteViews(getPackageName(),R.layout.process_widget);views.setTextViewText(R.id.process_count,"正在运行进程:"+ SystemInfoUtils.getRunningProcessCount(getApplicationContext())+ "个");long size = SystemInfoUtils.getAvailMem(getApplicationContext());views.setTextViewText(R.id.process_memory,"可用内存:"+ Formatter.formatFileSize(getApplicationContext(), size));
第五步:
处理按钮的点击事件,这里使用广播完成:
// 描述一个动作,这个动作是由另外一个应用程序执行的// 自定义一个广播事件,杀死后台的进程Intent intent = new Intent();intent.setAction("com.ustc.mobilemanager.KILLALL");PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);views.setOnClickPendingIntent(R.id.btn_clear, pendingIntent);awm.updateAppWidget(provider, views);
package com.ustc.mobilemanager.receiver;import java.util.List;import android.app.ActivityManager;import android.app.ActivityManager.RunningAppProcessInfo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class KillAllReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("桌面widget的按钮的点击事件的自定义广播接受到了");ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningAppProcessInfo> infos = am.getRunningAppProcesses();for (RunningAppProcessInfo info : infos) {am.killBackgroundProcesses(info.processName);}}}
0 0
- 82进程清理widget逻辑的实现
- 【Android】实现桌面清理内存简单Widget小控件
- Android的widget实现
- Android项目实战--手机卫士32--给清理进程添加一个Widget
- Android中的Widget的实现
- Android的App Widget实现
- DiskLruCache 达到最大设置的缓存,清理的逻辑
- Linux 下僵尸进程的清理方法
- 【mysql】清理被锁定的mysql进程
- 如何在Android实现桌面清理内存简单Widget小控件
- IoCompleteRequest的实现逻辑
- 抢购逻辑的实现
- 逻辑回归的实现
- 分页逻辑的实现
- 有嚼头的逻辑实现
- windows下实现特定进程在指定的逻辑cpu下运行的方法.
- BREW的Widget实现分析(一)
- Android Widget 电池插件的开发实现
- (复习)数据库连接及基本操作
- 一步一步教你用 echarts
- Android.mk 与AIDL 编译问题
- Android手势监听(GestureDetector类)
- django cpu监控之三-----izip数据转换
- 82进程清理widget逻辑的实现
- MongoDB的数据库连接(命令行方式)
- AFNetworking 报错 Request failed: unacceptable content-type: text/html
- C++之父:C++ 的五个普遍误解(1)
- Cocos2d-x NO_BORDER适配
- Java基础--反射
- 算法导论之分治法
- C++ 的五个普遍误解(2):垃圾回收
- 关于ArrayList 的基础知识的小程序