功能

思路

软件管理

对已安装的apk的管理

data/app

system/app

apk->>功能清单

1.获取apk信息的集合

2.PackageManager包管理者  查询与删除

3.PackageInfo 一个功能清单的解析内容的javaBean

4.ApplicationInfo  一个appliation标签 的解析信息  图标 应用名 路径.

5.flags变量  二进制   |分配  & 包含

6.复杂列表显示  ListView+BaseAdapter

7.两个方法getViewTypeCount视图种类

8.getItemViewType指定下标的类型-->getView

9.优化: 普通 列表 的n倍

10.Eviroment环境变量

11.PopupWindow 弹出视图 指定坐标显示

12.ScaleAnimation 缩放 AnimationSet动画集合

13.隐式意图:使用请求参数action动作category类型 data数据

14.adb命令+RootUtils.jar命令开发包

进程管理

对正在运行的程序的管理,查看 终止

相当于window任务管理器

1.进程 程序 线程

2.ActivityManager进程管理者 系统级的服务

3.获取正在运行的进程信息集合 uid pid  porcessName

4.给PackageManager来获取图标应用名

5.配置进程名<application process

6.使用flags分类

7.使用复杂ListView getViewTypeCount种类

8.getItemViewType 显示指定下标的视图

9.进程个数据 用户+系统

10.总内存:兼容 /proc/meminfo 读取第一行

11.killBackGorundProcess +权限

12.守护服务

13.服务级别 startForeGround

14.定时清理  Timer 1 2 3 4  CountDownTiemr倒计时

15.锁屏清理  接收SCREEN_OFF+清理所有进程 注意:代码注册广播

16.BaseAdapter的getCount 决定行数

AppWidget 显示在桌面的小程序

当用Activity来开发

参考文档完成

1.继承  AppWidgetProvider BoradcastReceiver的子类

2.布局

3.配置 <receiver

4.xml描述

5.用户从widgets页面拖到桌面

6.刷新 Timer+Service

7.RemoteViews 对视图的操作的工具 a.初始化 b.写事件

8.BroadcastReceiver 来响应点击

1.1. 卸载系统应用

用户应用程序的卸载:调用系统应用卸载界面.刷新

系统应用程序的卸载:以root账号登录 删除system/app/...apk

C:\Users\itheima>adb root  登录

adbd is already running as root

C:\Users\itheima>adb remount system/app  授权

remount succeeded

C:\Users\itheima>adb shell            shell命令

root@vbox86p:/ # rm -r system/app/Calculator.apk  强制删除

rm -r system/app/Calculator.apk

root@vbox86p:/ #

RootTools.jar

将命令发送给手机的一个开发库

mount   -o  remount  ,  rw  system/app

rm -r system/app/Calculator.apk

<span style="font-size:14px;">try {if (!RootTools.isRootAvailable()) {Toast.makeText(getBaseContext(), "请root手机", 0).show();return;}if (!RootTools.isAccessGiven()) {Toast.makeText(getBaseContext(), "授权后可卸载系统应用程序", 0).show();return;}// 系统// mount -o remount , rw system/appRootTools.sendShell("mount -o remount , rw system/app", 2000);// rm -r system/app/Calculator.apkRootTools.sendShell("rm -r "+apkInfo.path, 2000);Log.i("wzx", apkInfo.path+"");} catch (Exception e) {e.printStackTrace();
}</span>

1.2. 气泡特效

动画 Animation

|--TranslateAnimation

|--RoateAnimation

|--ScaleAnimation

|--AlphaAnimation

<span style="font-size:14px;"><span style="font-size:14px;">// ScaleAnimation:缩放动画// AlphaAnimation:透明度// AnimationSet:动画集合ScaleAnimation anim = new ScaleAnimation//(0.5f, 1.0f, 0.5f, 1.0f, //ScaleAnimation.RELATIVE_TO_SELF, 0.0f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f);anim.setDuration(500);// 1.宽高 0.5,0.5 -->1.0 1.0// 2.动画 时长 500// 3.点是 定点AlphaAnimation anim2 = new AlphaAnimation(0.5f, 1.0f);anim2.setDuration(500);AnimationSet animset = new AnimationSet(false);animset.addAnimation(anim);animset.addAnimation(anim2);viewPop.startAnimation(animset);</span></span>

2. 进程管理

需求:帮助用户 管理进程(查看  释放内存),类似 window任务管理器

进程

程序(apk)

线程

程序被打开,系统分配cpu与内存(资源)

安装在手机上 成为一个程序

java 处理耗时代码 线程

Thread

编程

程序---》运行--》进程

进程--》终止-->程序

知识要点:

① 创建 Activity a.继承 b.重写 c.配置 d.启动  布局

② 获取进程数(正在运行的程序个数)

ActivityManager

activity运行中

进程管理者

1.系统服务getSystemService

2.获取 个数

3.获取进程信息的集合

4.杀死后台进程

android 底层linux

linux proc目录  存放 的系统的信息。

1.cpu

2.men

3.流量

/**

* 获取系统中的进程个数

* @param context

* @return

*/

public static int getProcessCount(Context context)

{

//获取进程管理者

ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

//获取个数process=RunningApp

List<RunningAppProcessInfo>  list=am.getRunningAppProcesses();

return list.size();

}

③ 内存信息

<span style="font-size:14px;"><span style="font-size:14px;">/*** 获取可用内存* * @param context* @return*/public static long getFreeMem(Context context) {// 获取进程管理者ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);MemoryInfo mi = new MemoryInfo();// 获取进程信息am.getMemoryInfo(mi);return mi.availMem;}/*** 获取总内存* * @param context* @return*/@SuppressLint("NewApi")public static long getTotalMem(Context context) {// 获取进程管理者ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);MemoryInfo mi = new MemoryInfo();// 获取进程信息am.getMemoryInfo(mi);return mi.totalMem;// api 级别为16才有 sdk}public static long getTotalMem(Context context) {long total = 0;try {// 创建 文件流// 读取第一行// 解析出数量// 返回*1024File file = new File("proc/meminfo");// BufferedReader字符读取器BufferedReader reader = new BufferedReader(new FileReader(file));String firstLine = reader.readLine();// root@vbox86p:/proc # cat meminfochar[] chars = firstLine.toCharArray();StringBuffer sb = new StringBuffer();for (char c : chars) {if (c >= '0' && c <= '9') {sb.append(c);}}// cat meminfo// MemTotal: 511128 kB// 511128 kbtotal = Long.parseLong(sb.toString()) * 1024;// -->bytereader.close();} catch (Exception e) {e.printStackTrace();}return total;}</span></span>

④ 获取进程信息的集合

<span style="font-size:14px;"><span style="font-size:14px;">/*** 获取进程信息* @param context* @return*/public static List<ProcessInfo> findAll(Context context) {// 创建集合List<ProcessInfo> list = new ArrayList<ProcessInfo>();// 获取进程管理者ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);// apk 功能清单的applicationPackageManager pm = context.getPackageManager();// 获取进程列表List<RunningAppProcessInfo> processList = am.getRunningAppProcesses();for (RunningAppProcessInfo item : processList) {try {ProcessInfo bean = new ProcessInfo();bean.uid = item.uid;bean.pid = item.pid;// 【默认情况】 进程名 会等于 包名bean.packagename = item.processName;
//              <application  修改进程名
//              android:process="com.itheima.kuaibo.xxx000"// 图标ApplicationInfo applicationInfo = pm.getApplicationInfo(bean.packagename, 0);// 应用名bean.appIcon = applicationInfo.loadIcon(pm);bean.appName = applicationInfo.loadLabel(pm).toString();// 是系统还是用户 flags | &if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM) {bean.isSystem = true;} else {bean.isSystem = false;}// 内存 getProcessMemoryInfo获取一个进程的内存Debug.MemoryInfo mi=am.getProcessMemoryInfo(new int[]{bean.pid})[0];//getTotalPrivateDirty一个进程的内存bean.memorySize=mi.getTotalPrivateDirty()*1024;//添加到集合list.add(bean);} catch (NameNotFoundException e) {e.printStackTrace();}}return list;}</span></span>

⑤ 分类

⑥ 使用复杂ListView

listview.setOnItemClickListener(new ListView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

ProcessInfo info = (ProcessInfo) adapter.getItem(position);

if (info != null) {

info.isCheck = !info.isCheck;

}

// adapter =new ProcessAdapter();

// listview.setAdapter(adapter);

// // 比较

// if (adapter != null) {

// adapter.notifyDataSetChanged();//重新可见的所有行刷新

// }

ProcessViewHolder holder = (ProcessViewHolder) view.getTag();

holder.check.setChecked(info.isCheck);

}

});

⑦ 提供批量操作(项目十分流行)

<span style="font-size:14px;"><span style="font-size:14px;">@OnClick(R.id.select_all)public void select_all(View view){//用户for(ProcessInfo bean:userProcess){bean.isCheck=true;}//系统for(ProcessInfo bean:systemPorcess){bean.isCheck=true;}//界面刷新if(adapter!=null){adapter.notifyDataSetChanged();}}@OnClick(R.id.select_reverse)public void select_reverse(View view){//用户for(ProcessInfo bean:userProcess){bean.isCheck=!bean.isCheck;}//系统for(ProcessInfo bean:systemPorcess){bean.isCheck=!bean.isCheck;}//界面刷新if(adapter!=null){adapter.notifyDataSetChanged();}}</span></span>

⑧ 清理

<span style="font-size:14px;"><span style="font-size:14px;">// 获取进程管理者ActivityManager tm = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);// tm.killBackgroundProcesses(包名);tm.killBackgroundProcesses("com.itheima.mobilesafe");<!--     杀死后台进程 --><uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>@OnClick(R.id.clean)public void clean(View view){List<ProcessInfo> selected=new ArrayList<ProcessInfo>();//只针对选中//用户for(ProcessInfo bean:userProcess) //不可以 不能在加强for删除集合元素{if(bean.isCheck){selected.add(bean);}}//系统for(ProcessInfo bean:systemPorcess){if(bean.isCheck){selected.add(bean);}}if(selected.size()<1){Toast.makeText(getBaseContext(), "未选中进程", 0).show();return ;}//int freeCount=0;long  freeMemKill=0;//killfor(ProcessInfo bean:selected){ProcessUtils.killBackGroundProcess(this, bean.packagename);if(bean.isSystem){systemPorcess.remove(bean);}else{userProcess.remove(bean);}freeMemKill+=bean.memorySize;++freeCount;}if(adapter!=null){adapter.notifyDataSetChanged();//同步刷新列表 }//从集合中删除  列表同步//统计  释放 进程   内存  同步界面
Toast.makeText(this, "杀死"+freeCount+"个进程,释放了"+formate(freeMemKill)+"内存", 0).show();//同步界面process_count.setText("进程:" + (userProcess.size() + systemPorcess.size()) + "个");//剩余内存freemem+=freeMemKill;String result = "剩余/总内存:" + formate(freemem) + "/" + formate(totalmem);memory.setText(result);}</span></span>

⑨ 进程管理的设置

l 创建Activity 布局

l 事件  使用sp保存boolean

l 回到进程页面使用boolean

<span style="font-size:14px;"><span style="font-size:14px;">set_show_system_process.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {// 创建Activity 布局// 事件 使用sp保存booleanSharedPreferencesUtils.saveBoolean(getBaseContext(), "set_show_system_process", isChecked);// 回到进程页面使用boolean}});}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();
boolean set_show_system_processValue=SharedPreferencesUtils.getBoolean(getBaseContext(), "set_show_system_process", false);set_show_system_process.setChecked(set_show_system_processValue);}显示时列表的行数@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();if (adapter != null) {adapter.notifyDataSetChanged();}showProcessCount();}private class ProcessAdapter extends BaseAdapter {// 返回行数@Overridepublic int getCount() {
boolean set_show_system_processValue = SharedPreferencesUtils.getBoolean(getBaseContext(), "set_show_system_process", false);if (set_show_system_processValue) {return 2 + userProcess.size() + systemPorcess.size();} else {return 1 + userProcess.size();}}</span></span>

⑩ 防止被清理

方式一 创建守护服务 防止被人kill

a. 创建一个服务  MoSecurityService 1.继承 2.重写 3.配置 4.启动

b. onDestory 被别人kill并不会调用onDestory

<span style="font-size:14px;">public class MoSecurityService extends Service {@Overridepublic void onCreate() {super.onCreate();Log.i("wzx", "创建复活服务...");startService(new Intent(this,AddressShowService.class));startService(new Intent(this,CallSmsService.class));}// 服务 被强行关闭 隔5秒打开自已@Overridepublic void onDestroy() {super.onDestroy();Log.i("wzx", "销毁复活服务...onDestroy");}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}
}</span>

方式二:

服务也存在优先级的问题

系统>前台>后台>空

startForgound

// 提成前台

// Notification:显示状态通知里的对象

// 状态栏隐藏 小图标

// 显示:大图标 标题 描述 运行时间

// 通常绑定一个意图

// PenddingIntent:对象 Intent包装 只有点击时才打开 Pendding将来

// startForeground(编号 , 状态栏通知);

// Notification notification=new Notification(大图标, 小字, 时间);

Notification notification = new Notification(R.drawable.shenmabg, "黑马73 15K", System.currentTimeMillis());

// notification.setLatestEventInfo(上下文, 标题, 描述, 通常绑定一个意图 );

Intent intent = new Intent();

// <intent-filter>

// <action android:name="itheima.intent.action.HOME" />

// <category android:name="android.intent.category.DEFAULT" />

// </intent-filter>

intent.setAction("itheima.intent.action.HOME");

intent.addCategory("android.intent.category.DEFAULT");

PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, intent, 0);

notification.setLatestEventInfo(getBaseContext(), "金山手机卫士正在运行", "范德萨放松", pendingIntent);

startForeground(1, notification);

11 定时清理

Thread+while

Timer

j2se提供的定时器 ,设定时间 与时间间隔

执行一段代码 TimerTask

1 2 3 4 5 ...

CountDownTimer

是一个倒计时定时器

30  29  28  27

方法一:

<span style="font-size:14px;"><span style="font-size:14px;">// 创建定时器timer = new Timer();// schedule :计划 plan// timer.schedule(task, 延时时间, 时间间隔);timer.schedule(task, 0, 10000);//2个小时  60*2*60*1000}private TimerTask task = new TimerTask() {@Overridepublic void run() {Log.i("wzx", "当前是定时清理...");// killList<ProcessInfo> list = ProcessUtils.findAll(getBaseContext());for (ProcessInfo item : list) {ProcessUtils.killBackGroundProcess(getBaseContext(), item.packagename);}}};private Timer timer;// 服务 被强行关闭 隔5秒打开自已@Overridepublic void onDestroy() {super.onDestroy();if (task != null) {task.cancel();task = null;}Log.i("wzx", "销毁复活服务...onDestroy");}</span></span>

方法二

<span style="font-size:14px;">//        timer=new CountDownTimer(任务长度,时间间隔) {  30000  1000  30 29.。timer=new CountDownTimer(30000,1000) {//tick 滴答int count=30;//读秒@Overridepublic void onTick(long millisUntilFinished) {count--;Log.i("wzx", count+" count");ProcessUtils.killAll(getBaseContext());}//最后一次@Overridepublic void onFinish() {count--;ProcessUtils.killAll(getBaseContext());Log.i("wzx", count+" count");}};timer.start();}private CountDownTimer timer;// 服务 被强行关闭 隔5秒打开自已@Overridepublic void onDestroy() {super.onDestroy();if(timer!=null){timer.cancel();timer=null;}Log.i("wzx", "销毁复活服务...onDestroy");}</span>

12 判断服务是否在运行

<span style="font-size:14px;"><span style="font-size:14px;">/*** 判断 服务是否在运行* @param context* @param serviceName* @return*/public static boolean isSerivceRunning(Context context, String serviceName) {// 获取进程管理者ActivityManager tm = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningServiceInfo> infos = tm.getRunningServices(100);boolean isRunning = false;for (RunningServiceInfo item : infos) {if (serviceName.equals(item.service.getClassName())) {isRunning = true;break;}}return isRunning;}</span></span>

13 锁屏清理:锁屏广播接收

1.继承  2.重写 3.配置

该广播必须使用 代码注册才能生效

<span style="font-size:14px;">  IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_SCREEN_OFF);// 锁屏filter.addAction(Intent.ACTION_SCREEN_ON);// 解锁屏registerReceiver(receiver, filter);}private BroadcastReceiver receiver = new BroadcastReceiver() {public void onReceive(android.content.Context context, Intent intent) {Log.i("wzx", "onReceive接收到广播" + intent.getAction());if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())||Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {//清理}};};</span>
<span style="font-size:14px;"><span style="font-size:14px;">   // 服务 被强行关闭 隔5秒打开自已@Overridepublic void onDestroy() {super.onDestroy();unregisterReceiver(receiver);Log.i("wzx", "销毁复活服务...onDestroy");}</span></span>

14 桌面小控件AppWidget (只要求 开发者能够按照文档照抄)

AppWidget:微型小程序(“一个小Activity”)

1.只显示桌面

2.如果一个程序有appWidget 用户可从”小部件” 创建

3.包含视图

4.支持事件

5.自动更新

Activity

AppWidget

继承activity

继承

|--BroadcastReicever

|--AppWidgetProvider

布局view

布局view

配置

配置

启动

安装 以后由用户拖动桌面

刷新  Thread+handler

通过Service+Timer

findViewById  setOnClickListner

通过RemoteViews+BoradCastReceiver

http://www.apiminer.org/doc/guide/topics/appwidgets/index.html

//BroadcastReceiver

//|--AppWidgetProvider

public class MyWidgetProvider extends AppWidgetProvider {

}

<receiver android:name="com.itheima.widget.receiver.MyWidgetProvider" >

<intent-filter>

<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />

</intent-filter>

<meta-data

android:name="android.appwidget.provider"

android:resource="@xml/my_widget_provider" />

</receiver>

描述文件

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

android:initialLayout="@layout/my_widget_layout"

android:minHeight="100dp"

android:minWidth="200dp"

android:previewImage="@drawable/pre"

android:resizeMode="horizontal|vertical"

android:updatePeriodMillis="86400000" >

</appwidget-provider><!-- appwidget-provider 提供widget的描述信息的文件 -->

<!-- minHeight最小高度 -->

<!-- minWidth最小宽度 -->

<!-- previewImage视图的预览图片 -->

<!-- initialLayout widget的布局 -->

<!-- updatePeriodMillis更新时间  刷新widget使用timer_service -->

2.1. Widget更新

<span style="font-size:14px;"><span style="font-size:14px;">public class WidgetUpdateService extends Service {private Timer timer = null;private TimerTask task = new TimerTask() {@Overridepublic void run() {// 9:58:32SimpleDateFormat foramte = new SimpleDateFormat("HH:mm:ss");Date date = new Date();String time = foramte.format(date);// Actvitiy findViewById set..// 初始控件// RemoteViews: 只是一个操作控件的工具:findViewById setText setOnClickListern// 设置值RemoteViews remoteviews = new RemoteViews(getPackageName(), R.layout.my_widget_layout);remoteviews.setTextViewText(R.id.time_btn, time);// findViewById// setText// 更新到桌// AppWidgetManager 桌面小程序的管理 更新widget视图AppWidgetManager am = AppWidgetManager.getInstance(getBaseContext());// am.updateAppWidget(provider, views);//提交到桌面进行更新// ComponentName:组件nameComponentName name = new ComponentName(getBaseContext(), MyWidgetProvider.class);am.updateAppWidget(name, remoteviews);// 提交到桌面进行更新}};@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();timer = new Timer();timer.schedule(task, 0, 1000);Log.i("wzx", "widget更新服务 ....");}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();if (timer != null) {timer.cancel();timer = null;}}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}}</span></span>

2.2. 事件添加

<span style="font-size:14px;"><span style="font-size:14px;">//PendingIntent点击响应的IntentIntent intent=new Intent();intent.setAction("itheima.appwidget.action.ON_CLICK");PendingIntent  pI=PendingIntent.getBroadcast(getBaseContext(), 0, intent, 0);remoteviews.setOnClickPendingIntent(R.id.time_btn, pI);public class OnClickReciever extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubToast.makeText(context, "清理进程", 0).show();}
}<receiver android:name="com.itheima.widget.receiver.OnClickReciever" ><intent-filter><action android:name="itheima.appwidget.action.ON_CLICK" /></intent-filter></receiver></span>
</span><h1>1. 桌面小程序</h1><p>用户如果不看<span style="font-family:Times New Roman;">widget </span><span style="font-family:宋体;">暂停服务 </span><span style="font-family:Times New Roman;">stopService</span></p><p>用户看 启动 <span style="font-family:Times New Roman;">startService</span></p><p>appwidget<span style="font-family:宋体;">生命周期</span></p><p>生命周期<span style="font-family:Times New Roman;">:</span><span style="font-family:宋体;">一堆有序方法的集合,有开始 有销毁  </span><span style="font-family:Times New Roman;">x1 </span><span style="font-family:宋体;">中间有可能多次</span></p><p>回调函数<span style="font-family:Times New Roman;">:(CallBack)</span><span style="font-family:宋体;">都以</span><span style="font-family:Times New Roman;">on</span><span style="font-family:宋体;">开头  由开发者实现</span><span style="font-family:Times New Roman;">(</span><span style="font-family:宋体;">重写</span><span style="font-family:Times New Roman;">) </span><span style="font-family:宋体;">由系统调用。</span></p><p>Service: startService   onCreate-->onStartCommand --->running -->onDestory</p><p><span style="color:#646464;">@Override</span></p><p><span style="color:#7f055;">protected</span><span style="color:#000000;"> </span><span style="color:#7f055;">void</span><span style="color:#000000;"> onDestroy() {</span></p><p><span style="color:#7f055;">super</span><span style="color:#000000;">.onDestroy();</span></p><p><span style="color:#000000;">}</span></p><p><span style="color:#646464;">@Override</span></p><p><span style="color:#7f055;">protected</span><span style="color:#000000;"> </span><span style="color:#7f055;">void</span><span style="color:#000000;"> onStart() {</span></p><p><span style="color:#7f055;">super</span><span style="color:#000000;">.onStart();</span></p><p><span style="color:#000000;">}</span></p><p><span style="color:#646464;">@Override</span></p><p><span style="color:#7f055;">protected</span><span style="color:#000000;"> </span><span style="color:#7f055;">void</span><span style="color:#000000;"> onResume() {</span></p><p><span style="color:#7f055;">super</span><span style="color:#000000;">.onResume();</span></p><p><span style="color:#000000;">}</span><span style="color:#646464;">@Override</span></p><p><span style="color:#7f055;">protected</span><span style="color:#000000;"> </span><span style="color:#7f055;">void</span><span style="color:#000000;"> onPause() {</span></p><p><span style="color:#7f055;">super</span><span style="color:#000000;">.onPause();</span></p><p><span style="color:#000000;">}</span></p><p><span style="color:#646464;">@Override</span></p><p><span style="color:#7f055;">protected</span><span style="color:#000000;"> </span><span style="color:#7f055;">void</span><span style="color:#000000;"> onStop() {</span></p><p><span style="color:#7f055;">super</span><span style="color:#000000;">.onStop();</span></p><p><span style="color:#000000;">}</span></p><p>添加</p><p>09-21 01:08:27.840: I/wzx(2442): --onEnabled--- <span style="font-family:宋体;">第一个实例创建  </span>     <span style="color:#ff00;">Service+timer<span style="font-family:宋体;">更新 </span></span></p><p>09-21 01:08:27.840: I/wzx(2442): --onUpdate---  <span style="font-family:宋体;">更新桌面</span></p><p>09-21 01:09:08.320: I/wzx(2442): --onUpdate---<span style="font-family:宋体;">第</span><span style="font-family:Times New Roman;">N</span><span style="font-family:宋体;">个实例创建 </span></p><p>删除 </p><p>09-21 01:09:50.168: I/wzx(2442): --onDeleted--<span style="font-family:宋体;">删除第</span><span style="font-family:Times New Roman;">N</span><span style="font-family:宋体;">个实例创建 </span></p><p>09-21 01:10:12.044: I/wzx(2442): --onDeleted---</p><p>09-21 01:10:12.044: I/wzx(2442): --onDisabled---<span style="font-family:宋体;">最后一个</span><span style="font-family:Times New Roman;">widget</span><span style="font-family:宋体;">实例从桌面删除  </span><span style="color:#ff00;"> Service+Timer<span style="font-family:宋体;">更新</span></span></p><p> </p><h2>1.1. Appwidget<span style="font-family:黑体;">的尺寸问题</span></h2><p> <img src="data:image/png;base64,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" alt="" /></p><p> </p><h2>1.2. 山寨其它应用<span style="font-family:Arial;">appwidget</span></h2><p> <img src="data:image/png;base64,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uOGGv//97x0dHevWrcvLy/v973/vdrsJggBGFCHEcdymTZu2bNmycePGrKyshx56yOl0wk8HDx58/fXXf/e735nN5ilTphw4cODMmTMFBQWdnZ1Hjx6dPHnyHXfcsXz58mPHjgUCgdmzZ69ZswacaysrKw8dOpSTkyOTycrKyioqKkpKSvDbRUkyDz300EMPPQTHwPoKglBVVbVz587FixdHKV2/LTCOM9eE75QAACAASURBVIR9oH/DE4/94tbb3so2POynqnUy1o2UerpoMPxRoqOhZ+D1V189U38St7/pppvGfxY4S+zevdvv9+NMWFgtB+mrIFgGO1U99NBDVqvV5XJ1dHTEaha8Xu/bb79ts9kgRgEhJJPJ2traHnjgAVByiKL46KOP4vagFAF0AF0IOCJ7vd6///3vYw0bTAI4ZQbcjqI0IoQkWlkYTnCJ4+HGn5eJgNVqvfzyy7FGJDc3FyHU09OzYcOGHTt2rFu37sSJE7feeiuoE20224YNG15++WWE0LJly37961+XlJTs3r37iSeeeO211xBCPM/v2bPH4XCAwnD16tV6vf4vf/mL0WjkeR6IpNvtXrp0KUVRM2bMwMMA1fz8+fOB7icmJqanp1dVVTU2NjocDoZhHn30UZ7n6+rqoBQBVpHNnDnzD3/4w4EDB1Qq1axZs9rb27dt24YQOnXqFKjLoBlURYhSJAqC0NTUtGnTJr1ef9111+n1+q8+n/99GGe3FUWxoaHuj489svry72/MLngL6T830TcG3DPivPtOnPng/Xfbms+ctXNCkt8FLoKHCsYEjD+gmYT1SQzHcXo8nkAggENdYJXju8LhcE1NDe4fBC0A4DaxKy88neO4UCgEuQxAvTGqA3QsgOMH9voAx/9oHxF8TAwH9oNn1tfitp+amnrzzTebzWZ8RRCEAwcOVFZWZmRkIIQqKipmzZoFyp+rr7569erVoDqPi4uLVX60t7d/8sknhYWFRqOxs7NzyZIljz/++J///Oc777wTHMqWL18OHnTjAEmSc+fOraysdLlct9xyS1FR0erVq2UyGYjCXq/3+PHjF110ERAlg8Fw6623HjhwABTHW7duhU4GBwdDodBTTz0Fp2VlZVarVYppoijabLZNmzZ1d3ffd999sMV890AUhNbmxj8/96e5FyxYMW/+tfHxdnvvq/sP7vv0E26M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mA3dWPFEa1/NJ8deXlp6vUqm06vjdSpLSdbS7MTSEy17Bl197x58ujx3BU0o/AEPq2FJghTFL2JTwlwwFAkFQv5G29HMhBJfyNloq7boU11+e2vvicKM+Q1dh41aa5wmeeLD5llREERhjKqUeDYQQtFafoQQQRA4Tzj4BKCRgQATAbPZfOutt954442j/nrkyJENGzbcf//9+fn5kKsIIRQfH3/77bdfffXVCKENGzY88sgjhw8fRgj5fL6HH34Yk8fe3t6NGzfirurq6trb2zdv3oydGC0Wy5VXXpmcnIyGI2erq6tPnjy5du3a2J0+SjUKGbVefPHF2bNn5+TkHDt27Fe/+tXjjz8+d+7c1tbW55577uTJk4cOHfrd736HMe2zzz677777LBZLUVHRmTNnbr/99scff/zCCy/EfbIs++CDD+7du3fp0qUajeadd95pbGz87W9/m5KS8sYbb6xfv37p0qWJiYkff/xxU1PTAw88IA29GRoaev/997u7u7OystLT0wFzRFFsb29/9tlneZ6HhD9VVVVvvPHGddddJ4pid3f3v/71r127dt13331RUTxfF4iiCOHwe/bs0Wq14BIhbSAIAs8JPIcm7IF4FrDoUzLiC+va93sDQ32D7UZNEoHI/qFOldwQZoPBsNekTUo1FfQ720mR/vDIplDEXz5pRXrCVBmtJAmSoZQyWu0Leb1+t9vn3F/33tTMxU5f356at6644A6aZBhayVAyhpTLKAUSiYkPm2MFMcZoHAWjc49oWE8CtjZI5AAXz6mGE03TsKe2tLTg9FUMw6Snp6empra1tcHxpEmT8C2RSOT06dO7d+9GCLW1tbEsC8fhcLirqwvzjX19fU899dRVV10FIdihUIiQlLHu7u7eunXrokWLkpOTL7vssksvvdRms914443z589ft25dVJrX5ORkyK/o8XhqampSU1NlMtnWrVvLysqefvppuVx+9OjRm2666dChQ3Pnzk1OTr7hhhs4jps7dy7uQRCEnTt38jy/fv36KVOm9PT0rF279r333luyZAmeq9bW1i1bttx777133313JBJ5/vnn//GPf9hsNqvVunHjxtLS0meeeUYul7/55pvPPvvsmTNnotBDoVCEQqFDhw4tWrQIcsJEIpH9+/fb7fb09HTcTK1WP/300wihYDD4j3/844UXXqivr/8P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" alt="" /></p><p>a. 布局</p><p>b. 创建<span style="font-family:Times New Roman;">AppWidgetProider</span></p><p>c. 配置<span style="font-family:Times New Roman;"><receiver</span></p><p>d. 描述 创建<span style="font-family:Times New Roman;">xml</span></p><p>e. 更新    <span style="font-family:Times New Roman;">Service+Timer+Remoteviews+</span><span style="font-family:宋体;">优化</span><span style="font-family:Times New Roman;">onEnable</span></p><p>f. 写事件  <span style="font-family:Times New Roman;">RemoteViews+BroadcastReceiver</span></p>

卸载系统应用动画气泡特效创建守护服务进程管理(ActivtyManager提供批量操作)桌面小控件AppWidget相关推荐

  1. 如何在Ubuntu系统的顶部标题栏中增加CPU/内存/网速实时监控的小控件

    在windows系统下用360加速球用习惯了,老是不自觉的会去关注系统的CPU占用率.内存占用率.网速情况等信息,不知道大家是不是也有这种习惯.那么在linux系统(Ubuntu)下,是否也有类似的工 ...

  2. 跨线程操作无效:从创建该线程的线程以外的线程访问控件

    我有一个场景. (Windows窗体,C#.. NET) 有一个主窗体可以承载一些用户控件. 用户控件执行一些繁重的数据操作,因此,如果我直接调用UserControl_Load方法,则UI在加载方法 ...

  3. 100% .NET Control_使用CurrencyManager 创建一个导航条来控制DatagGrid的XNavBar控件(VB.NET)....

    Begin MSDN: 要使 Windows 窗体数据绑定成为可能,必须有数据提供程序和使用者. 从提供程序这一方最容易接近 Windows 窗体数据绑定的结构. 绑定一个 Windows 窗体及其控 ...

  4. Adobe Premiere基础-常用的视频特效(边角定位,马赛克,模糊,锐化,手写工具,效果控件层级顺序)(十六)

    边角定位 这个特效非常好使,可以将很多视频都融入到当前视频的场景中,当做广告,操作方式很简单 先在效果里搜索边角定位 我们准备一个素材 然后将边角定位拖动到,自己准备的素材上,然后在效果控件中点击文字 ...

  5. 海量数据大课学习笔记(6)-短链平台项目创建+git代码管理+开发分层规范讲解--小滴课堂

    文章目录 前言 第1集 短链平台实战-Maven聚合工程创建微服务项目 第2集 Gitee仓库介绍和项目纳入版本管理+ignore文件配置 第3集 阿里编码规范里面Manager分层介绍-和开发规范说 ...

  6. mfc 创建线程函数AfxBeginThread,线程中访问mfc控件

    转字http://blog.csdn.net/guomsh/article/details/10377993 1. C++ 中如何定义线程函数 有两种方法:a. 定义线程函数为全局函数    b. 定 ...

  7. 计算机窗口动画效果,win7系统窗口动画慢动作功能开启的修复方案

    win7系统使用久了,好多网友反馈说win7系统窗口动画慢动作功能开启的问题,非常不方便.有什么办法可以永久解决win7系统窗口动画慢动作功能开启的问题,面对win7系统窗口动画慢动作功能开启的图文步 ...

  8. Android自绘控件开发与性能优化实践——以录音波浪动画为例

    前言 本文实战性较强,主要目的是通过一个自定义控件的开发,引出我对自定义控件性能优化的一些思考和实践,欢迎各位喜欢移动开发的小伙伴来拍砖~ 本文由于篇幅有限,只讲解思路,并没有放出大量源代码,如果对本 ...

  9. 《深入理解Android 卷III》第六章 深入理解控件(ViewRoot)系统

    <深入理解Android 卷III>即将发布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...

  10. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...

最新文章

  1. CVPR2020最新论文扫描盘点(上)
  2. leetcode算法题--使序列递增的最小交换次数★
  3. R语言:求二维变量数学期望
  4. mysql 5.6到percona 5.6小版本升级
  5. C语言学习,关于fflush 和setvbuf
  6. ubantu安装pycharm破解+Linux基础简介
  7. python面试题之如何计算一个字符串的长度
  8. 理解允许定位,音频,网络电话..
  9. 前端小白该如何学习?前端开发工程师掌握哪些能力
  10. [转]ASP.NET MVC IOC 之AutoFac攻略
  11. Oracle快速运行一指禅
  12. JDC job obend
  13. Visio绘制网络拓扑图
  14. 北理工团队在不同注意力状态下肢体运动意图的鲁棒神经解码方面取得重要研究进展...
  15. webpack 合并压缩_文章 - coolie PK webpack 之一:JS 文件的合并与压缩 - FED社区
  16. css让图片img水平居中-行内元素居中
  17. uni-app中$navigateTo失效
  18. 扰动分析 matlab,扰动材料力学有限元分析:基于MATLAB编程
  19. POJ 1088滑雪(3种解法)
  20. sc query mysql_SC 命令用法

热门文章

  1. 断点续传续播的大概原理
  2. 苹果手机怎么连接蓝牙耳机_QCY蓝牙耳机 T5在苹果IOS和安卓手机上的延迟对比
  3. 4G模块ME909S-821调试记录
  4. 给移动硬盘安装PE系统
  5. HTML模拟电池页面,Html 电池图标
  6. 【读书笔记】《Web全栈工程师的自我修养》
  7. Apache 支持ipv6 安装及常见问题
  8. LabVIEW串口调试助手
  9. IIS 部署.NetCore
  10. 【AAAI 2021】全部接受论文列表(六)