Android Widget 与测试方法

1.创建一个APP Widget必要的元素

AppWidgetProviderInfo对象

AppWidgetProvider

View Layout(视图布局)

RemoteView

5Intent :

ACTION_APPWIDGET_UPDATE,

ACTION_APPWIDGET_DELETED,

ACTION_APPWIDGET_ENABLED,

ACTION_APPWIDGET_DISABLED,

ACTION_APPWIDGET_CONFIGUR

2.APP Widget Action消息简介

ACTION_APPWIDGET_UPDATE:当一个Widget被加入到桌面时,更新时间到了或是Widget配置Activity返回完成时,该Action被放入Intent以广播形式发送出来,这个广播消息告诉APP Widget框架需要更新Widget,然后框架就自动调用AppWidgetProvider(OnUpdateContext,AppWidgetManager,int[])方法进行更新。

ACTION_APPWIDGET_DELETED:当一个App WidgetApp Widget host中被删除时,此Action被放入Intent以广播形式发送出去,这个广播消息告诉APP Widget框架,有Widget已经从APPWidgetHost中删除,然后框架自动调用AppWidgetProvider onDeleted(Context,int[])方法进行删除相应的Widget

ACTION_APPWIDGET_ENABLED:当一个实例App Widget首次被创建时,该Action被放入Intent以广播形式发送出来,然后框架自动调用AppWidgetProvideronEnable(Context)方法,这个广播消息告诉APP Widget框架,有Widget实例已经被创建,状态为可用状态。

ACTION_APPWIDGET_DISABLED:当最后一个App Widget实例被从App Widget host中删除时,该Action被放入Intent以广播形式发送出来,然后框架自动调用AppWidgetProvideronDisable(Context)方法,这个广播消息告诉APP Widget框架,所有的Widget实例已经被删除,状态为不可用状态。

ACTION_APPWIDGET_CONFIGUR:当AppWidgetProviderInfo对象指定了添加APP Widget时候的配置Activity(xml中指定android:configure属性,其对应的是包中的一个Activity,作为配置功能的Activity),那么,在添加APP Widget到桌面时,该Action被放入Intent以正常形式启动一个Activity-- startActivity(intent)方式传递,开启配置Activity,当然,这个配置Activity也必须指定相应的Action过滤器。如:

<activity android:name="WidgetConfig">

   <intent-filter>

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

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

   </intent-filter>

</activity>

在开发过程中,我们只需要对AppWidgetProvider添加一个过滤Action的过滤器,该Action就是ACTION_APPWIDGET_UPDATE,而其他的Action,系统会自动过滤。

3.Android测试:无法使用System.out.println(""),Android提供了下面两种方法。

AndroidLog机制:

下面介绍用Log的常规方法和另类方法进行跟踪测试。

Log5类打印信息:有两种构造函数

Log.e("mydreamy""nihao");//打印出错误日志信息

Log.d("mydreamy""nihao");//打印出调试日志信

Log.i("mydreamy""nihao",new Throwable());//打印出信息日志

Log.v(String Tag,String message,Throwable tr);//打印出详细日志信息

Log.w(String Tag,String message);//打印出警告日志信息

运行结果

 .........

另外如果Log信息太多,会造成我们想要的信息找起来比较困难。这里可以在LogCat中添加过滤器,方法很简单就不介绍了。如图:

另外如果你不想在测试中反复删除Log测试语句(或把他注释掉,如://Log.e("mydreamy","nihao");则你可以把Log跟踪语句单独抽出来,写成个工具类,用一个静态Boolean变量作为开关:

import android.util.Log;

//封装好的LogCat工具类

public class LogUtil {

//锁,是否关闭Log日志输出

public static boolean LogOFF=false;

//五种Log日志类型

//调试日志类型

public static final int DEBUG=111;

//错误日志类型

public static final int ERROR =112;

//信息日志类型

public static final int INFO =113;

//详细信息日志类型

public static final int VERBOSE =114;

//警告日志类型

public static final int WARN =115;

//显示,打印日志

public static void LogShow(String Tag,String Message,int Style){

// TODO Auto-generated constructor stub

if(!LogOFF)

switch (Style) {

case DEBUG:{

Log.d(Tag, Message);

}

break;

case ERROR:{

Log.e(Tag, Message);

}

break;

case INFO:{

Log.i(Tag, Message);

}

break;

case VERBOSE:{

Log.v(Tag, Message);

}

break;

case WARN:{

Log.w(Tag, Message);

}

break;

default:

break;

}

}

}

当需要在某个类中测试时只要添加

LogUtil.LogShow("mydreamy""nihao", LogUtil.DEBUG);

方法就行了,当测试通过只需要改一下LogUtil.LogOFF=true;

当然为了在logcat中查看方便,我们同样可以添加过滤器。

另外,还可以用Toast来打印输出文字,来测试。

如:

Toast.makeText(contexttextduration);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值