- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 ICS 和 Widgets 时偶然发现了一个我似乎无法正确调试的问题。
该应用程序有一个主 Activity (WidgetActivity)、一个小部件配置 (WidgetConfigure) 和一个提供程序 (WidgetProvider)。小部件的布局(下面的代码)有一个父 LinearLayout 和两个子 LinearLayout。这两个 child 都设置为不可见。在我的提供商的 onUpdate
中,我实例化了该小部件的 RemoteViews 对象,并尝试将第一个 LinearLayout 设置为可见。
当放置在主屏幕上时,小部件会显示,但两个 child 不会(预期)。当调用 onUpdate
时,子项未设置为可见。我在 adb 中得到的是一堆来自 StrictMode 的关于小部件无法将其状态写入磁盘的警告。存在读写策略违规。由于我实际上并没有在任何地方进行任何读写操作,因此我假设这是一个操作系统调用。
我的问题 - 这种 StrictMode 会导致我的视图不改变可见性吗?我理解,在粗略的、高层次上,StrictMode 允许我识别我的 UI 线程中哪里有慢速代码。但我不想在不了解发生了什么的情况下盲目地覆盖或设置新的 StrictMode 设置。
如 adb 所示,我的 onReceive 被调用(如果您再次等待 180000 毫秒),但我的 subview 未设置为可见。我不确定为什么。
这是代码。小部件布局 xml、提供程序、adb 跟踪:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF"
android:orientation="vertical" >
<include layout="@layout/widget_next_season" />
<include layout="@layout/widget_upcoming_game" />
</LinearLayout>
public class WidgetProvider extends AppWidgetProvider {
private static String TAG = "### WidgetProvider";
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
Log.d(TAG, "onUpdate");
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Log.d(TAG, "Got Views");
views.setViewVisibility(R.id.layout_one, View.VISIBLE);
Log.d(TAG, "Should've set visibility");
}
}
D/### WidgetProvider( 522): onUpdateD/### WidgetProvider( 522): Got ViewsD/### WidgetProvider( 522): Should've set visibilityI/ActivityManager( 84): Start proc com.android.quicksearchbox for broadcast com.android.quicksearchbox/.CorporaUpdateReceiver: pid=536 uid=10011 gids={3003}D/dalvikvm( 34): GC_EXPLICIT freed 37K, 4% free 9901K/10243K, paused 4ms+6msD/dalvikvm( 84): GC_CONCURRENT freed 496K, 5% free 12726K/13383K, paused 11ms+43msD/StrictMode( 84): StrictMode policy violation; ~duration=2436 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=151 violation=2D/StrictMode( 84): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1074)D/StrictMode( 84): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:94)D/StrictMode( 84): at libcore.io.IoBridge.open(IoBridge.java:390)D/StrictMode( 84): at java.io.FileOutputStream.(FileOutputStream.java:88)D/StrictMode( 84): at com.android.server.AppWidgetService.writeStateToFileLocked(AppWidgetService.java:1220)D/StrictMode( 84): at com.android.server.AppWidgetService.saveStateLocked(AppWidgetService.java:1204)D/StrictMode( 84): at com.android.server.AppWidgetService$2.onReceive(AppWidgetService.java:1503)D/StrictMode( 84): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)D/StrictMode( 84): at android.os.Handler.handleCallback(Handler.java:605)D/StrictMode( 84): at android.os.Handler.dispatchMessage(Handler.java:92)D/StrictMode( 84): at android.os.Looper.loop(Looper.java:137)D/StrictMode( 84): at com.android.server.ServerThread.run(SystemServer.java:744)D/StrictMode( 84): StrictMode policy violation; ~duration=2301 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=151 violation=1D/StrictMode( 84): at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:1048)D/StrictMode( 84): at libcore.io.BlockGuardOs.write(BlockGuardOs.java:178)D/StrictMode( 84): at libcore.io.IoBridge.write(IoBridge.java:447)D/StrictMode( 84): at java.io.FileOutputStream.write(FileOutputStream.java:187)D/StrictMode( 84): at com.android.internal.util.FastXmlSerializer.flushBytes(FastXmlSerializer.java:212)D/StrictMode( 84): at com.android.internal.util.FastXmlSerializer.flush(FastXmlSerializer.java:233)D/StrictMode( 84): at com.android.internal.util.FastXmlSerializer.endDocument(FastXmlSerializer.java:183)D/StrictMode( 84): at com.android.server.AppWidgetService.writeStateToFileLocked(AppWidgetService.java:1266)D/StrictMode( 84): at com.android.server.AppWidgetService.saveStateLocked(AppWidgetService.java:1204)D/StrictMode( 84): at com.android.server.AppWidgetService$2.onReceive(AppWidgetService.java:1503)D/StrictMode( 84): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)D/StrictMode( 84): at android.os.Handler.handleCallback(Handler.java:605)D/StrictMode( 84): at android.os.Handler.dispatchMessage(Handler.java:92)D/StrictMode( 84): at android.os.Looper.loop(Looper.java:137)D/StrictMode( 84): at com.android.server.ServerThread.run(SystemServer.java:744)
最佳答案
事实上,原因是 StrictMode。我通过确保我的网络代码在 Service
中而不是在小部件的 onUpdate
中解决了这个问题。尽管如此,Android 仍然提示违反了网络和光盘访问的 StrictMode。
为了解决这个问题,我修改了 StrictMode 策略,并在完成后重置它。我只是围绕网络代码调用这些函数。
/**
* Prevent exceptions from doing disk and network operations in a service
*/
protected static void setPermissiveThreadPolicy() {
// set StrictMode to allow network/disk in service
oldThreadPolicy = StrictMode.getThreadPolicy();
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(oldThreadPolicy).permitNetwork().permitDiskReads().permitDiskWrites().build());
}
/**
* Reset thread policy to previously known state for consistency
*/
protected static void resetThreadPolicy() {
if (oldThreadPolicy != null) {
// reset to old policy
StrictMode.setThreadPolicy(oldThreadPolicy);
}
}
关于android - Ice Cream Sandwich 严格模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9535229/
通过支持库 v11 更新和 notificationcompat,可以在 ice cream sandwich 中显示 jelly bean notification(大图) ? 最佳答案 不,对不起
我一直收到现场客户的报告,说我的应用程序在进入后台一段时间(10-15 分钟)后会关闭(不是强制关闭,只是关闭)。过去不是这样的。就好像 Android 正在更加积极地减少同时运行的应用程序的数量,从
我在我的应用程序中自定义了所有字体,在 2.2 和 2.3 上一切正常,但在 4.0 上,字体要细得多。如何解决?我还有另一种字体 (helvetica),它是一个 .otf 文件并且工作正常。其他字
我在 ICS 4.0.3 上运行线程时遇到问题 我制作了 apk,并已将其安装在 2.33 SE 手机和 Google Nexus S 4.0.3 上。 在 SE 上,apk 正在按预期运行和加载。但
我开发了一个在 hive 上运行的应用程序。我想知道 Ice Cream Sandwich 会不会有问题?什么是 ics 的向后兼容性? 最佳答案 最简单的方法就是亲自尝试,Android SDK 中
我在使用 ICS 和 Widgets 时偶然发现了一个我似乎无法正确调试的问题。 该应用程序有一个主 Activity (WidgetActivity)、一个小部件配置 (WidgetConfigur
通过该代码,我成功地处理了 4.0 以下版本的 HomeKey,但我在处理 4.0 更高版本的 Homekey 时遇到了问题。所以请帮我解决这个问题以处理 4.0 版以上的 HomeKey press
我开发了一个 Android 应用程序,无法从 Market 下载到 Android ICS 设备。使用 4.x 设备浏览市场时,人们会看到“不兼容警告”并且无法继续下载。该应用程序的 minSdkV
谁能解释一下这个错误是什么?我只获得 android 4 + 而不是以下版本: E/AndroidRuntime(891): java.lang.RuntimeException: 无法启动 Acti
我有一个针对 SDK 3.0 构建的应用程序。 在这个应用程序中有一个相对布局,它有一个全屏 VideoView,其下方有一个按钮。视频 View 上设置了一个 onTouchListener,用于监
http://developer.android.com/reference/android/app/Notification.html#number 任何人都可以确认这是否已从 ICS 中删除(或之
有谁知道 Ice Cream Sandwich 样式标签的教程/示例(向左/向右滑动 - 就像在 YouTube 应用中一样) 不是 向后兼容支持库。只需要 API 级别 14 或 15。 我的项目只
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
大家好我正在尝试以 SMS 增强器的名义继续开发 SMS 弹出窗口,我在应用程序部分中已经有一个线程,我想更改布局的外观,例如按钮,如何覆盖“默认”编辑和获取其他设备(如 gb)的外观等 ics 而不
在我的 ondestroy 方法中,我回收了所有用于释放内存并防止应用程序在屏幕旋转期间崩溃的位图。事实证明,在 Ice Cream Sandwich (android 4.0) 之前,这对所有 ap
我正在为 Ice Cream Sandwich 构建一个 Android 应用程序。我希望在我的应用程序中能够使用 ViewPager,但我似乎不能这样做,因为它说它仅在使用兼容包时可用。在这里我有一
我正在寻找一种方法来为我的 Android 4 应用标签提供类似于图像的样式,并且每个标签都有自己的 Activity 类。 最佳答案 请注意,TabHost 是原生 Android 组件,因此它会根
我创建了一个将事件存储在设备日历中的应用程序,并且可以正常工作。但是当我尝试在 ICE CREAM SANDWICH 中做同样的事情时,应用程序崩溃了。为什么会这样?谁能帮我解决这个问题?我用来在设备
我的应用是基于 Androi-2.3.3 (gingerbread) 构建的。当我在 4.0.3( Ice Cream Sandwich )上运行这个应用程序时,我看到了 webviews 的问题。我
这张图片怎么放http://1.androidauthority.com/wp-content/uploads/2011/10/ics-notifications.jpg ) 到通知栏? 最佳答案 N
我是一名优秀的程序员,十分优秀!