功能 | 思路 |
软件管理 对已安装的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/app
RootTools.sendShell("mount -o remount , rw system/app", 2000);
// rm -r system/app/Calculator.apk
RootTools.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 {
// 创建 文件流
// 读取第一行
// 解析出数量
// 返回*1024
File file = new File("proc/meminfo");
// BufferedReader字符读取器
BufferedReader reader = new BufferedReader(new FileReader(file));
String firstLine = reader.readLine();
// root@vbox86p:/proc # cat meminfo
char[] 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 kb
total = Long.parseLong(sb.toString()) * 1024;// -->byte
reader.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 功能清单的application
PackageManager 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;
//kill
for(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() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// 创建Activity 布局
// 事件 使用sp保存boolean
SharedPreferencesUtils.saveBoolean(getBaseContext(), "set_show_system_process", isChecked);
// 回到进程页面使用boolean
}
});
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
boolean set_show_system_processValue=SharedPreferencesUtils.getBoolean(getBaseContext(), "set_show_system_process", false);
set_show_system_process.setChecked(set_show_system_processValue);
}
显示时列表的行数
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
if (adapter != null) {
adapter.notifyDataSetChanged();
}
showProcessCount();
}
private class ProcessAdapter extends BaseAdapter {
// 返回行数
@Override
public 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 {
@Override
public void onCreate() {
super.onCreate();
Log.i("wzx", "创建复活服务...");
startService(new Intent(this,AddressShowService.class));
startService(new Intent(this,CallSmsService.class));
}
// 服务 被强行关闭 隔5秒打开自已
@Override
public void onDestroy() {
super.onDestroy();
Log.i("wzx", "销毁复活服务...onDestroy");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return 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() {
@Override
public void run() {
Log.i("wzx", "当前是定时清理...");
// kill
List<ProcessInfo> list = ProcessUtils.findAll(getBaseContext());
for (ProcessInfo item : list) {
ProcessUtils.killBackGroundProcess(getBaseContext(), item.packagename);
}
}
};
private Timer timer;
// 服务 被强行关闭 隔5秒打开自已
@Override
public 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;
//读秒
@Override
public void onTick(long millisUntilFinished) {
count--;
Log.i("wzx", count+" count");
ProcessUtils.killAll(getBaseContext());
}
//最后一次
@Override
public void onFinish() {
count--;
ProcessUtils.killAll(getBaseContext());
Log.i("wzx", count+" count");
}
};
timer.start();
}
private CountDownTimer timer;
// 服务 被强行关闭 隔5秒打开自已
@Override
public 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秒打开自已
@Override
public 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() {
@Override
public void run() {
// 9:58:32
SimpleDateFormat 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:组件name
ComponentName name = new ComponentName(getBaseContext(), MyWidgetProvider.class);
am.updateAppWidget(name, remoteviews);// 提交到桌面进行更新
}
};
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
timer = new Timer();
timer.schedule(task, 0, 1000);
Log.i("wzx", "widget更新服务 ....");
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (timer != null) {
timer.cancel();
timer = null;
}
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}</span></span>
2.2. 事件添加
<span style="font-size:14px;"><span style="font-size:14px;">//PendingIntent点击响应的Intent
Intent 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{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.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>