首页 > 编程知识 正文

Android系统WebView,安卓imageview

时间:2023-05-06 01:04:46 阅读:109568 作者:810

android中的RemoteView添加点击操作是通过延迟意图PentingIntent来执行的。

应用场景:通知栏和桌面小部件,更新不同进程之间的接口

桌面部件和通知栏分别由AppWidgetManager和通知管理器管理,分别与系统服务进程的AppWidgetServer和通知管理器进行通信

通知栏:

1 .当前,清单文件配置如下

! --app构件的receiver-- receiver Android : name=' com.wmh.mobilesafe.receiver.appwidgetprovider ' intent-fil tel intent-filter meta-data Android 3360 name=' Android.app widget.provider ' Android receiver2.设置@xml/appwidget_info

2.1首先介绍各属性的含义

! -在app构件-提供程序xmlns 3360 Android=' http://schemas.Android.com/apk/RES/Android ' Android 3360 minwidth=' 2990调整中安卓: updateperiodmillis=' 86400000 ' /忽略更新周期,毫秒,默认30分钟内安卓: preview image=' @ drawable/preview 默认设置为IC _ launcher Android 3360 initial layout=' @ layout/example _ app widget ' /布局文件Android 3360 configure=' com.ee 安卓: resize mode=' horizontal ' /构件可以拉伸的方向。 horizontal表示可以水平拉伸,vertical表示可以垂直拉伸的Android :构件类别=' home _ screen|key guard ' /分别是屏幕的主页(4.2系统支持。 ) Android : initialkeyguardlling example _ key guard '//锁定状态显示样式(仅在4.2系统上支持)/app构件- provider-- 2.2以下是我的配置

? XML version=' 1.0 ' encoding=' utf-8 '? app构件- provider xmlns 3360 Android=' http://schemas.Android.com/apk/RES/Android ' Android 3360 minwidth=' 294 DP '

publicclassappwidgetproviderextendsandroid.app widget.appwidgetprovider {/* *1. on enabled调用用于创建第一个表单小部件的方法时*。

ate 创建多一个窗体小部件的方法 *3.onAppWidgetOptionsChanged 当窗体小部件的宽高方式改变的时候调用,创建的时候也调用 *4.onDeleted 删除小部件调用的方法 *5.onDisabled 删除最后一个窗体小部件调用的方法 */@Overridepublic void onReceive(Context context, Intent intent) {super.onReceive(context, intent);}//创建第一个窗体小部件的方法@Overridepublic void onEnabled(Context context) {super.onEnabled(context);//开启服务context.startService(new Intent(context,UpdateWidgetService.class));}//删除最后一个窗体小部件调用的方法@Overridepublic void onDisabled(Context context) {super.onDisabled(context);//关闭服务}}4.配置服务,用来实时更新窗体小部件

public class UpdateWidgetService extends Service {private Timer timer;private TimerTask task;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();// 管理进程总数和可用内存数的更新startTimer();}private void startTimer() {timer = new Timer();task = new TimerTask() {@Overridepublic void run() {// UI定时更新UpdateAppWidget();}};timer.scheduleAtFixedRate(task, 0, 2000);// 比schedule要好}protected void UpdateAppWidget() {// 1.获取APPwidget的对象AppWidgetManager aWM = AppWidgetManager.getInstance(this);// 2.获取窗体小部件的布局转化成的ViewRemoteViews view = new RemoteViews(getPackageName(), R.layout.process_widget);// 3.给窗体小部件view对象,内部空间赋值view.setTextViewText(R.id.tv_process_count,"进程数:" + ProcessInfoProvider.getProcessCount(getApplicationContext()));String availMemory = Formatter.formatFileSize(getApplicationContext(),ProcessInfoProvider.getAvailMemory(getApplicationContext()));view.setTextViewText(R.id.tv_process_memory, "可用内存:" + availMemory);// 设置点击事件进入应用 PendingIntent延期的意图Intent intent1 = new Intent();intent1.setAction("android.intent.action.splash");intent1.addCategory("android.intent.category.DEFAULT");// FLAG_CANCEL_CURRENT 点了就消失PendingIntent pendingIntent1 = PendingIntent.getActivity(this, 0, intent1, PendingIntent.FLAG_CANCEL_CURRENT);view.setOnClickPendingIntent(R.id.ll_widget_root, pendingIntent1);//通过延期意图发送广播,在广播接收者中杀死进程Intent broadCastIntent = new Intent("android.intent.action.KILL_BACKGROUND_PROCESS");PendingIntent pendingIntent2 = PendingIntent.getBroadcast(getApplicationContext(), 0, broadCastIntent, PendingIntent.FLAG_CANCEL_CURRENT);view.setOnClickPendingIntent(R.id.bt_clear, pendingIntent2);// 更新的操作 后面的参数是窗体小部件对应的的广播接收者 attention:这一步写在最后边ComponentName componentName = new ComponentName(getApplicationContext(), AppWidgetProvider.class);aWM.updateAppWidget(componentName, view);}@Overridepublic void onDestroy() {super.onDestroy();if (timer != null && task != null) {timer.cancel();task.cancel();}}}5.配置清理进程的广播接收者

public class killBackGroundReicever extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//接收广播,清理进程ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {am.killBackgroundProcesses(runningAppProcessInfo.processName);}}}


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。