关于appwidget之天气小控件服务器是中国天气网

关于小控件要实现需要先继承AppWidgetProvider

其中onReceive,onUpdate只在拖动出小控件到屏幕上和删除小控件才会调用。所以可以在onReceive中启动服务更新你的小控件

小控件应该在你的程序关闭还可以再更新所以用startReceive而不是bindReceiver。我的思想就是 启动一个服务过一段时

间就去连接服务器获取数据,然后发送一个广播,自己接受这个广播接受到了就进行控件更新。

代码如下:

<span style="font-size:18px;">
</span>

启动服务:

Intent intent2=new Intent(context, weatherservice.class);
context.startService(intent2);

更新显示小控件:

RemoteViews updateViews = getRemoteViews(weatherservice.this);
/* 建立ComponentName对象与AppWidgetManager对象 */
ComponentName thisWidget = new ComponentName(weatherservice.this,
WeatherWidget.class);
//
AppWidgetManager manager = AppWidgetManager.getInstance(weatherservice.this);
//
manager.updateAppWidget(thisWidget, updateViews);


其中getRemoteViews方法主要为获取RemoteViews ;

public static RemoteViews getRemoteViews(Context context){

retRemoteViews = new RemoteViews(context.getPackageName(),
R.layout.weatherappwidget);
//获取一个布局显示小控件

//下面可以对小控件的各个组件进行设置

}

httpClient的get获取中国天气网的数据:

HttpClient client=new DefaultHttpClient();
HttpGet get=new HttpGet(uri);
// 请求超时
client.getParams().setParameter(
CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);
// 读取超时
client.getParams().setParameter(
CoreConnectionPNames.SO_TIMEOUT, 15000);
// 连接服务器,发送请求,等待响应
HttpResponse response = client.execute(get);
// 获取数据实体
HttpEntity entity = response.getEntity();
// 解析数据实体获取字符串
String result= EntityUtils.toString(entity, "UTF-8");

//获取的数据是JSON格式的所以需要JSON解析
JSONObject json=new JSONObject(result);

具体解析方式就自己去研究啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值