我开发了一个在Android上使用大量图像的应用程序.
该应用程序运行一次,填满屏幕上的信息(Layouts
,Listviews
,Textviews
,ImageViews
,等)和用户读取的信息.
没有动画,没有特效或任何可以填充内存的东西.有时候抽屉可以改变.有些是android资源,有些是保存在SDCARD文件夹中的文件.
然后用户退出(该onDestroy
方法被执行并且app由VM保持在内存中)然后在某个时刻用户再次进入.
每次用户进入应用程序时,我都可以看到内存越来越多,直到用户获得java.lang.OutOfMemoryError
.
那么处理许多图像的最佳/正确方法是什么?
我应该把它们放在静态方法中,这样它们就不会一直装载吗?我是否必须以特殊方式清洁布局或布局中使用的图像?
我有以下一些例外情况:
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355)
at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:191)
at android.view.Window$LocalWindowManager.updateViewLayout(Window.java:428)
at android.app.Dialog.onWindowAttributesChanged(Dialog.java:596)
at android.view.Window.setDefaultWindowFormat(Window.java:1013)
at com.android.internal.policy.impl.PhoneWindow.access$700(PhoneWindow.java:86)
at com.android.internal.policy.impl.PhoneWindow$DecorView.drawableChanged(PhoneWindow.java:1951)
at com.android.internal.policy.impl.PhoneWindow$DecorView.fitSystemWindows(PhoneWindow.java:1889)
at android.view.ViewRoot.performTraversals(ViewRoot.java:727)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4338)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索它,看到它与弹出窗口和转动屏幕有关,但没有引用我的代码.
问题是:
我试图从一个网页解析Android中的HTML,并且由于网页形成不好,我得到了SAXException
.
有没有办法解析Android中的HTML?
我正在寻找android锁屏的源代码.它可以适用于任何版本的Android(1.5,1.6,2.0等).
我尝试在https://android.googlesource.com/上查看存储库,但它看起来不像它platform/frameworks/base
.也许它是封闭的来源?
我无法理解这两种设计模式.
你能不能给我一些背景信息或一个例子,这样我就可以得到一个清晰的想法,并能够映射出他们两者之间的差异.
谢谢.
我有一个活动,我调用finish()方法,活动不会从内存中清除.
在调用finish()之后,我看到onDestroy()方法成功执行(我清除了所有变量和内容).
它应该从内存中清除还是它的android如何工作?据我所知,活动的LifeCycle已经完成.
如果它将应用程序保留在内存中,以便在用户第二次使用它时运行得更快,那么我可以将哪些对象留在内存中以便重用?如果我理解正确,我想要清除onDestroy上的所有内容.
我读约setDrawingCacheEnabled
和getDrawingCache
,我想知道,当它的好处是使用它或当其并不好.
基本上在我的情况下,我有HorizontalScrollView
很多内容,所以它的左/右滚动,大多数事情是不可见的.
如果我setDrawingCacheEnabled(true)
在视图上使用它有帮助吗?或者这只是当我使用自定义视图并且我打电话的时候getDrawingCache()
?
是否还有其他'缓存'方式可供使用HorizontalScrollView
?
在我的Android应用程序中我得到"数据库磁盘映像格式错误"获取此错误的原因是什么?
没关闭db?多个线程访问数据库?或者android刚刚被破坏了?
谢谢
android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed
android.database.sqlite.SQLiteQuery.native_fill_window(Native Method)
android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:75)
android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:288)
android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:269)
android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171)
android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
...
Run Code Online (Sandbox Code Playgroud) 我有一个代码在99%的时间内工作,因为在很多客户端部署,但有时我会得到以下内容:
java.lang.reflect.InvocationTargetException android.widget.LinearLayout.(LinearLayout.java:92)java.lang.reflect.Constructor.constructNative(Native Method)java.lang.reflect.Constructor.newInstance(Constructor.java:446)android .view.LayoutInflater.createView(LayoutInflater.java:499)com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:562)android.view .LayoutInflater.rInflate(LayoutInflater.java:617)android.view.LayoutInflater.inflate(LayoutInflater.java:407)android.view.LayoutInflater.inflate(LayoutInflater.java:320)com.mycode.mycode.MyClass.draw(xxxxxxx ).....
在我的代码上我有:
LayoutInflater li =(LayoutInflater)这个.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
theview = li.inflate(R.layout.partofthescreen,somecontainer,false);
所以问题是为什么我得到InvocationTargetException.
谢谢
当我尝试在Lollipop上使用Gradient时,它不起作用.虽然它适用于所有以前的版本.
这是我的例子:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:type="radial" android:gradientRadius="500"
android:startColor="#00417e" android:endColor="#001b34" />
Run Code Online (Sandbox Code Playgroud)