7.5 widget内的内容更新和点击事件
来源:互联网 发布:宇宙中的生命 知乎 编辑:程序博客网 时间:2024/05/22 06:18
--------------------------------------------------------------
1. 在widget类中, 在onEnabled()方法中开启widget跟新的服务;在onDisabled() 方法中停止服务
3. 当点击widget中的按钮的时候发送一条自定义广播
public class MyWidget extends AppWidgetProvider {
private Intent intent;
/**
* 当widget创建的时候
*/
@Override
public void onEnabled(Context context) {
intent= new Intent(context,UpdateWidgetService. class); //开启更新widget的服务
context.startService( intent);
}
/**
* 当widget销毁的时候
*/
@Override
public void onDisabled(Context context) { //关闭更新widget的服务
if( intent!= null){
context.stopService( intent);
}
}
/**
* 系统半个小时更新次widget
*/
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
intent= new Intent(context,UpdateWidgetService. class); //开启更新widget的服务
context.startService( intent);
}
}
------------------------------------------------------------------------------
2. 创建跟新widget的服务, 在服务内创建计时器, 每个一段事件, 利用widget管理器更新app的widget
public class UpdateWidgetService extends Service {
private static final String TAG = "UpdateWidgetService";
private Timer timer; //计时器
private TimerTask timerTask;
private AppWidgetManager awm;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
/**
* 服务创建时
*/
@Override
public void onCreate() {
super.onCreate();
Log. i(TAG, "服务开启" );
awm=AppWidgetManager. getInstance(getApplicationContext());
timer= new Timer();
timerTask= new TimerTask() {
@Override
public void run() {
ComponentName widget= new ComponentName(getApplicationContext(), MyWidget.class );
RemoteViews views= new RemoteViews(getPackageName(), R.layout.process_widget );
views.setTextViewText(R.id. process_count,
"当前进程"+TaskMemoreryUtis.getRuingProcessCount(getApplicationContext())+ "个");
views.setTextViewText(R.id. process_memory,
"当前可用内存:" +Formatter.formatFileSize(getApplicationContext(),
TaskMemoreryUtis. getAvailMem(getApplicationContext())));
Intent intent= new Intent();
intent.setAction( "123.456");
PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(), 0,intent,
PendingIntent. FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id. btn_clear, pendingIntent);
//更新widget中数据 1.要更新的widget 2.widget显示的view对象
awm.updateAppWidget(widget, views);
}
};
//计时器从widget创建1秒钟开始工作, 每隔2秒钟, 跟新widget中的内容
timer.schedule( timerTask, 1000, 2000);
}
/**
* 当服务关闭时
*/
@Override
public void onDestroy() {
super.onDestroy();
Log. i(TAG, "服务关闭" );
//关闭计时器
timer.cancel();
timerTask.cancel();
timer = null;
timerTask = null;
}
}
---------------------------------------------------------------------------------
4. 创建一个自定义广播类, 接收自定义广播, 在类中响应广播事件
public class WigitKillTaskReceiver extends BroadcastReceiver {
private static final String TAG = "WigitKillTaskReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log. i(TAG, "杀死后台全部进程" );
ActivityManager am=(ActivityManager) context.getSystemService(context .ACTIVITY_SERVICE );
List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
if(runningAppProcessInfo. processName.equals( context.getPackageManager())){
continue;
}
am.killBackgroundProcesses(runningAppProcessInfo. processName);
}
Toast. makeText(context , "清理完毕" ,0).show();
}
}
- 7.5 widget内的内容更新和点击事件
- Widget的点击事件
- Android Widget点击事件
- Android Widget点击事件
- Android Widget点击事件
- 点击短信内容,获取短信内的号码和链接
- 获取时时点击事件 和清除页面内容的方法
- widget 点击事件突然失效
- android 转载 widget点击事件
- Qt Widget重叠放置和兄弟Widget的事件传递
- datagrid之类的组件中行内按钮点击和行点击事件问题
- ListView内 按钮的点击事件
- 点击短信内容,获取短信内的号码和链接(2)
- 点击短信内容,获取短信内的号码和链接(2)
- 点击事件,确定内容
- Jargonfish: 提高博客内容深度和价值的Widget
- Android widget定时更新及事件处理
- 触摸事件和点击事件的区别
- Linux 启动过程分析
- Java基础测试题
- Openstack能走多远——Openstack、VMware浅析
- poj2886Who Gets the Most Candies?(线段树,记活人的数量,题目类似约瑟夫环)
- 内存管理/守护进程
- 7.5 widget内的内容更新和点击事件
- shell脚本---查找并删除重复的文件
- Android操作系统源代码下载方法
- Matlab 几种卷积的实现与比较(conv与filter,conv2与filter2,imfilter)
- 偶然发现转义字符还可以这么用,大一的孩子拿去交作业吧!
- Java环境变量
- hdu2993 MAX Average Problem (斜率dp)
- c++11之condition_variable学习笔记
- asp.net数据库连接web.config配置