展会信息港展会大全

android widget使用
来源:互联网   发布日期:2015-10-03 10:41:09   浏览:710次  

导读:在 \res\xml下新建example_appwidget_info.xml在layout下新建process_widget.xml,用来显示widget的布局 新建一...

在 \res\xml下新建example_appwidget_info.xml

在layout下新建process_widget.xml,用来显示widget的布局

新建一个类ProcessWidget继承AppWidgetProvider

import cn.itcast.mobilesafe.service.UpdateWidgetService;

import android.appwidget.AppWidgetProvider;

import android.content.Context;

import android.content.Intent;

import android.sax.StartElementListener;

public class ProcessWidget extends AppWidgetProvider {

Intent intent;

@Override

public void onDeleted(Context context, int[] appWidgetIds) {

super.onDeleted(context, appWidgetIds);

intent = new Intent(context,UpdateWidgetService.class);

context.stopService(intent);

}

@Override

public void onEnabled(Context context) {

super.onEnabled(context);

intent = new Intent(context,UpdateWidgetService.class);

context.startService(intent);

}

}

新建类UpdateWidgetService实现widget更新

import android.app.PendingIntent;

import android.app.Service;

import android.appwidget.AppWidgetManager;

import android.content.ComponentName;

import android.content.Intent;

import android.graphics.Color;

import android.os.IBinder;

import android.widget.RemoteViews;

public class UpdateWidgetService extends Service {

private Timer timer ;

private TimerTask task;

private AppWidgetManagerwidgetmanager;

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onCreate() {

timer = new Timer();

widgetmanager =AppWidgetManager.getInstance(getApplicationContext());

task = new TimerTask() {

@Override

public void run() {

// 更新widget的界面

ComponentName name = new ComponentName("cn.itcast.mobilesafe", "cn.itcast.mobilesafe.receiver.ProcessWidget");

RemoteViews views = new RemoteViews("cn.itcast.mobilesafe", R.layout.process_widget);

views.setTextViewText(R.id.process_count, "进程数目"+TaskUtil.getProcessCount(getApplicationContext()));

views.setTextColor(R.id.process_count, Color.RED);

views.setTextViewText(R.id.process_memory, "可用内存"+TaskUtil.getMemeorySize(getApplicationContext()));

views.setTextColor(R.id.process_memory, Color.RED);

Intent intent = new Intent(UpdateWidgetService.this,LockScreenReceiver.class);

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);

views.setOnClickPendingIntent(R.id.btn_clear, pendingIntent);

widgetmanager.updateAppWidget(name, views);

}

};

timer.scheduleAtFixedRate(task, 1000, 2000);

super.onCreate();

}

@Override

public void onDestroy() {

timer.cancel();

timer = null;

task =null;

super.onDestroy();

}

}

TaskUtil的代码如下:

import java.util.List;

import android.app.ActivityManager;

import android.app.ActivityManager.MemoryInfo;

import android.app.ActivityManager.RunningAppProcessInfo;

import android.content.Context;

import android.text.TextUtils;

public class TaskUtil {

public static void killAllProcess(Context context) {

ActivityManager am = (ActivityManager) context

.getSystemService(Context.ACTIVITY_SERVICE);

List runningapps = am.getRunningAppProcesses();

for (RunningAppProcessInfo info : runningapps) {

String packname = info.processName;

am.killBackgroundProcesses(packname);

}

}

public static int getProcessCount(Context context) {

ActivityManager am = (ActivityManager) context

.getSystemService(Context.ACTIVITY_SERVICE);

List runningapps = am.getRunningAppProcesses();

return runningapps.size();

}

public static String getMemeorySize(Context context) {

ActivityManager am = (ActivityManager) context

.getSystemService(Context.ACTIVITY_SERVICE);

MemoryInfo outInfo = new ActivityManager.MemoryInfo();

am.getMemoryInfo(outInfo);

return TextFormater.getDataSize( outInfo.availMem);

}

}

在AndroidManifest.xml的配置

赞助本站

人工智能实验室

相关热词: android开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港