- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在更新 AppWidgets 时遇到问题,而 android 中的限制/错误的汇合使我无法找到解决方法。
我的应用程序小部件是可主题化的,因此我需要能够在运行时更新其上的 ImageView (以及 TextView 和 Intent )。我正在更新多达 9 个 ImageView ,但我使用的图形大小相当适中(最大 11kb png)。我通过 RemoteViews 对象推送的数据总大小应该在 100kb 以下,完全在 1mb 的限制之内。我认为屏幕上的实际可绘制资源最终会比原始 png 的尺寸大,但 10% 的限制似乎足以解释这一点。但是,对于某些手机和发射器,我收到“失败的 BINDER 交易”错误。
我找到了两种解决方案:
1) 对 RemoteViews 对象使用 setImageViewUri(它调用 setImageURI)而不是 setImageViewResource,这样可以避免通过 RemoteViews 对象发送可绘制对象,而是从 URI 加载图像。解决内存错误(参见 https://groups.google.com/forum/#!topic/android-developers/KKEyW6XdDvg/discussion )
2) 将对应用小部件的更新分成多个 RemoteViews 调用。所以我更新了 3 个图像,调用 updateAppWidget,创建一个新的 RemoteViews 对象,更新接下来的 3 个图像,调用 updateAppWidget,等等。
第一种方法的问题在于它仅适用于中密度设备。由于 android 代码库中的错误,所有其他设备无法正确缩放图像(请参阅错误报告:http://code.google.com/p/android/issues/detail?id=22590)
第二种方法的问题在于,当屏幕方向发生变化时,android 使用它存储在某个 secret 位置的最后一个 RemoteViews 调用销毁并重新创建小部件 View 。这意味着 appwidget 没有完全重绘,因为我拆分了我的 RemoteView 调用并且小部件最终无法使用。似乎没有可靠的方法来确定 android 何时销毁和重新创建 appwidgets - 服务中的 onConfigurationChanged 并不总是触发并且我找不到任何 Activity 级别调用(即 onUpdate,onReceive)。为了能够在方向更改时完全正确地重绘小部件,我只能使用一个 RemoteViews (updateAppWidget) 调用,因此此解决方案将不起作用。
有人知道如何解决这个问题吗?我想知道是否有可能实现我自己的 RemoteViews,该 RemoteViews 调用了一个无错误的 setImageURI 函数(在自定义 ImageView 类中),以便正确进行缩放。似乎很多工作只是更新一些小部件,我不确定 android 是否允许我以这种方式扩展 RemoteViews/ImageView。
有没有办法在屏幕方向改变时拦截 android 并强制它重绘整个小部件?
很想听听任何其他建议或解决方法!谢谢。
最佳答案
我在开发集合的 AppWidget 时遇到了同样的问题。很多时候会发生以下情况:
PendingIntents
)停止响应;setImageViewResource
更改的图像没有得到更新;..等等。我得出了与您相同的结论:android 使用它存储在某个 secret 位置的最后一次 RemoteViews 调用销毁并重新创建小部件 View 。在确认这一点之后,这是一个精确计时调用 AppWidgetManager.getInstance(context).updateAppWidget()
的问题,因为我想禁用 clickListeners (或 PendingIntents) 在告诉 ListView 刷新自身(这是调用 Web 服务和检索大量数据的网络操作)并希望在 ListView 完成加载后启用监听器同时维护 RemoteViews满载以处理旋转。
我差点放弃并使用它作为替代品..
Is there anyway to intercept android when the screen orientation changes and force it to redraw the whole widget?
.. 与 AppWidget 不同,确实拦截 Android 旋转更改的服务。如果您没有其他选择,我建议您尝试一下:
public class MyWidget extends AppWidgetProvider {
@Override
public void onConfigurationChanged(Configuration newConfig)
{
// insert code here
}
}
了解有关该服务的更多信息 here in StackOverflow .
关于android - 应用小部件更新问题 : Failed Binder Transaction, RemoteViews、setImageURI 和方向更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824393/
我为 Android 应用程序创建小部件(当然是用 Java)。我有从布局(使用布局 ID)创建的经典 RemoteViews RemoteViews rv = new RemoteViews(con
我一直在研究如何使用 RemoteView 创建自定义布局通知。 到目前为止,我能够使用 contentView 和 bigContentView 指向带有自定义布局 xml 的 RemoteView
我使用两个应用程序。一个通过 AIDL 接口(interface)公开一个 RemoteView。第二个使用 ListView 和自定义适配器来呈现 RemoteView。 使用一个布局和一个 Tex
我正在开发两个 android 应用程序,一个是 baseApp,另一个是 pluginApp。目的是在安装相应插件时扩展 baseApp 的功能。 pluginApp 将包含 XML 布局文件,其中
我正在尝试使用自定义远程 View 创建媒体播放器控件通知。我遇到的问题是,每次我在远程 View 中更改某些内容时,我都需要取消通知并从头开始重建它。这种方法对性能非常不利,因为它明显滞后。 (即将
我在更新服务中的自定义通知值时遇到问题。我使用 RemoteView 并希望每秒更新一次 textview,但我没有任何真正的想法来做这件事。这是我的代码: int icon = R.drawable
整个早上都在努力尝试放置文本“正在模拟”下的进度条。谁能帮帮我?添加图片: 最佳答案 如果您不想按照其他答案的建议使用 RelativeLayout,这里有一个选项。
我一直在到处搜索 RemoteViews 中支持的方法列表,但一无所获。任何人都可以链接资源或列出 RemoteViews 支持的所有可用方法吗?谢谢。 最佳答案 我假设您指的是 RemoteView
到目前为止,我一直使用 remoteViews.setImageViewBitmap() 直接将位图加载到我的 RemoteViews 中。总的来说它工作正常。 但是一些用户遇到了问题,我认为是在加载
我正在创建一个使用一些小部件的应用程序,我在 remoteView 上使用 setInt() 方法来更改背景源。这不是问题,但我想知道有关方法名称的文档在哪里。在 RemoteViews API 中,
来自 the documentation , RemoteViews 的构造函数是 public RemoteViews (String packageName, int layoutId) 文档说
我正在通过集成 RemoteViews 实现自定义推送通知。问题是,remoteview 中的按钮没有显示。我没有弄错我做错了什么。 代码: public class AlarmReceiver ex
我的 Assets 文件夹中有一些 SVG,我需要在我的小部件(在 ImageView 上)中动态设置它们。 我正在使用这个库:http://code.google.com/p/svg-android
所以,经过大量的摸索之后,我已经束手无策了。我的通知中有一个媒体播放器 RemoteViews,我希望能够访问播放、暂停、上一个和下一个按钮。 我知道 setOnClickPendingIntent(
Jelly Bean 中引入的扩展通知允许添加操作。这些操作显示为一行中的按钮。如果我想用我自己的自定义 View 修改它,我会考虑远程 View 。 扩展通知是否允许远程查看?在扩展通知存在之前,我
我想将 TextView 的高度远程设置为 WRAP_CONTENT。 我该怎么做,因为没有 remoteviews.setLayoutParams(viewId, param) 函数? 我尝试了 r
我正在尝试将值转发到 Android RemoteView。一些值可以通过使用反射的 set 方法转发。例如背景颜色作品: rv.setInt(R.id.viewId, "setBackgroundC
我尝试创建自定义通知,但收到以下异常: FATAL EXCEPTION: main android.app.RemoteServiceException: Bad notification poste
这个问题在这里已经有了答案: Is there a way to animate on a Home Widget? (5 个回答) 关闭6年前。 将动画应用于 RemoteViews 内的 View
我有问题。有时我的服务会被这个 logcat 强行关闭: 03-26 20:44:44.849: E/AndroidRuntime(12080): FATAL EXCEPTION: main 03-2
我是一名优秀的程序员,十分优秀!