我觉得一般没有响应的话应该是 主线程里面做的事情太多,导致阻塞,你可以new一个子线程,或者这样可以让它响应快一点
解决方案 »
- 给RelativeLayout添加onclicklistener的问题
- android usb 插拔监听
- 关于viewpager的问题
- 给控件设置ID的时候为什么要这样写?
- 严肃求助:如何实现TransparentBlt?
- android 中,客户端信息(手机中信息)如何导入服务器端数据库??
- android 模拟器上如何删除程序(*.apk)
- 大家的公司开发一个app的周期一般多久
- jarsigner签名报错Invalid keystore format
- Android 检测Temperature,过高或者过低则进行关机,如何实现?
- 那位大侠帮着解释解释,下面的代码中是如何判断按键是回车键的
- 通常所说的代码追踪指的是什么,怎么做?
我这边是桌面上widget的换肤调用AppWidgetManager.getInstance(context).updateAppWidget (int[] appWidgetIds, RemoteViews views)之后就不由系统自己刷新桌面了,这个刷新的过程比较慢。。
我试过对每个需要更新的widget启动一个service来更新,换肤的速度还是一样慢
2. 检查加载图片所需要的时间。
加载时间很快,各个widget刷新时间??调用AppWidgetManager.getInstance(context).updateAppWidget (int[] appWidgetIds, RemoteViews views)后怎么去检查刷新时间??
你试试用大点的图片去换肤,同时换5个的话是不是有部分WIDGET没刷出来
mRefreshRunnable = new Runnable() {
@Override
public void run() {
if(null != mViews){
if(1 == mIndex % 2){
mViews.setImageViewResource(R.id.test, R.drawable.test);
}else{
mViews.setImageViewResource(R.id.test, R.drawable.test1);
}
mIndex++;
updateWidget();
}
mHandler.postDelayed(mRefreshRunnable, 1000);
}
}; private void updateWidget(){
final AppWidgetManager awm = AppWidgetManager.getInstance(mContext);
awm.updateAppWidget(WIDGET_NAME, mViews);
}
可以啊
mViews.setImageViewResource(R.id.test, R.drawable.test);
这句就是只会更新id为test的imageView图片。
还有就是每次刷新和最后一次刷新的区别,是每次刷新快还是最后一次刷新好?要看具体情况觉得用哪种方法?
我的情况是,只刷新7个widget的一张图片是很快,但刷widget上的7个imageView图片,这样算起来就有7*7=49张图片了
分析了下LOG信息
08-27 14:49:39.715: DEBUG/dalvikvm(23314): GC freed 19233 objects / 1125824 bytes in 102ms
08-27 14:49:39.735: ERROR/Scratchpad(23314): appWidgetId 1:434
08-27 14:49:39.735: ERROR/Scratchpad(23314): appWidgetId 2:435
08-27 14:49:39.735: ERROR/Scratchpad(23314): appWidgetId 3:436
08-27 14:49:40.245: DEBUG/dalvikvm(100): GC freed 17224 objects / 1209944 bytes in 297ms
08-27 14:49:40.355: ERROR/JavaBinder(100): !!! FAILED BINDER TRANSACTION !!!
08-27 14:49:40.565: DEBUG/dalvikvm(19229): GC freed 4612 objects / 222896 bytes in 166ms
08-27 14:49:40.845: DEBUG/dalvikvm(23314): GC freed 1787 objects / 141624 bytes in 85ms
出现了一个08-27 14:49:40.355: ERROR/JavaBinder(100): !!! FAILED BINDER TRANSACTION !!!
更新三个WIDGET,其中一个出现FAILED BINDER TRANSACTION !,这个WIDGET就没有更新
查了下相同的问题
http://osdir.com/ml/Android-Developers/2010-01/msg00673.html
这个最后的结果没看懂,版主大牛有什么看法??
哈哈,解决了,查到的资料分享下,以便有人遇到
http://hi.baidu.com/tigerpan/blog/item/26305963df32f949ebf8f843.html
按这资料的解决办法,我作了如下修改//修改前
AppWidgetManager.getInstance(context).updateAppWidget(
appWidgetIds,buildView(context, getAllScratchpad(context),isChangeSkin));//修改后
for(int i=0;i<appWidgetIds.length;i++){
int appWidgetId = appWidgetIds[i];
RemoteViews remoteViews = buildView(context, getAllScratchpad(context), isChangeSkin);
AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId,remoteViews);
}