我刚刚阅读了Romain Guy关于如何避免Android内存泄漏的博客文章.
在文章中他给出了这个例子:
private static Drawable sBackground;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
TextView label = new TextView(this);
label.setText("Leaks are bad");
if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground);
setContentView(label);
}
Run Code Online (Sandbox Code Playgroud)
罗曼说:
这个例子是泄露Context的最简单的例子之一.
我的问题是,你如何正确地修改它?
像这样?
TextView label = new TextView(Context.getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
我测试了两种方式,结果是一样的.我无法找到差异.我认为这this
比应用程序上下文更正确.因为this
是一个参考Activity
,也就是TextView
属于那个Activity
.
有人可以给我一个解释吗?
D/AndroidRuntime(11752):
D/AndroidRuntime(11752): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
D/AndroidRuntime(11752): CheckJNI is ON
D/dalvikvm(11752): creating instr width table
E/jdwp (11752): pipe failed
W/ProcessState(11752): Opening '/dev/binder' failed: Too many open files
D/AndroidRuntime(11752): Calling main entry com.android.commands.am.Am
I/Mamarduke_Diag( 1726): Data is available now.
I/Mamarduke_Diag( 1726): exec result -->>> java.lang.NullPointerException
I/DMIC ( 1726): ---> java.lang.NullPointerException
I/System.out( 1726): *****wifi state end=1
D/dalvikvm( 1726): GC_EXPLICIT freed 31K, 41% free 7507K/12551K, external 1625K/2137K, paused 58ms
D/dalvikvm( 1726): GC_EXPLICIT freed 0K, 41% free 7507K/12551K, external 1625K/2137K, paused 58ms
I/System.out( …
Run Code Online (Sandbox Code Playgroud) mWifiManager.startScanActive()
和之间有什么区别mWifiManager.startScan()
.和
之间有什么区别?active scan
passive scan
我读了Launcher源代码,其版本是ICS.有一个RocketLauncher
课程延伸BasicDream
.是什么BasicDream
?怎么BasicDream
办?我可以找到这一行import android.support.v13.dreams.BasicDream;
,但我在互联网上找不到任何关于它的信息.请给我一些信息来理解它.谢谢!
更新:我在启动器manifest.xml中找到了这些代码
<activity android:name="com.android.launcher2.RocketLauncher"
android:label="@string/dream_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.DREAM" />
</intent-filter>
</activity>
有一个新的类别android.intent.category.DREAM
,它曾经做过什么?那个RocketLauncher是一个Activity
?
我知道如何在清单中将主题设置为整个应用程序,但如何以编程方式将主题设置为整个应用程序?我正在尝试这个:getApplicationContext.
setTheme(R.style.mytheme),但它不起作用.
我认为getApplicationContext
是应用程序的上下文,可以设置整个应用程序的主题.
Canvas和Bitmap之间有什么关系?
Bitmap drawingBitmap = Bitmap.createBitmap(bmp1.getWidth(),
bmp1.getHeight(), bmp1.getConfig());
canvas = new Canvas(drawingBitmap);
paint = new Paint();
canvas.drawBitmap(bmp1, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SCREEN));
canvas.drawBitmap(bmp2, 0, 0, paint);
compositeImageView.setImageBitmap(drawingBitmap);
Run Code Online (Sandbox Code Playgroud)
我不明白这段代码.为什么drawingBitmap是bmp1和bmp2的组成?
可能重复:
Android系统应用程序101
/ system/app和/ data/app有什么区别?两个目录中是否有一些不同的权限.
在我的应用程序中,我使用MessageDigest.getInstance("SHA-1")
获取SHA1,它可以在Android 2.3中成功运行,但它无法在Android 4.0中运行,它将显示以下异常:
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: android.security.MessageDigest
at com.screenshare.email.Utility.getConsistentDeviceId(Utility.java:597)
at com.screenshare.exchange.SyncManager.getDeviceIdInternal(SyncManager.java:1079)
at com.screenshare.exchange.SyncManager.getDeviceId(SyncManager.java:1045)
at com.screenshare.exchange.SyncManager.onCreate(SyncManager.java:1813)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2253)
at android.app.ActivityThread.access$1600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
谁可以解释这个案子?
通常,我们应该使用@+id/
定义一个id并@id
引用一个id。今天我@+android:id/title
在apps/settings/res/layout/preferenc_progress.xml
。
如何理解和使用它?
我知道RTSP和HTTP两个在线视频是由android支持的.但是如何理解RTSP和HTTP之间的区别.我想知道在使用RTSP或HTTP播放在线视频时如何工作,以及它们之间有什么区别.谢谢!