我遇到了代码
ImageAdapter.java - http://developer.android.com/resources/tutorials/views/hello-gallery.html
TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = a.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
a.recycle();
Run Code Online (Sandbox Code Playgroud)
attrs.xml - http://developer.android.com/resources/tutorials/views/hello-gallery.html
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="HelloGallery">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)
并且代码:
TileView.java - http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/TileView.html
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TileView);
mTileSize = a.getInt(R.styleable.TileView_tileSize, 12);
a.recycle();
Run Code Online (Sandbox Code Playgroud)
attrs.html - http://developer.android.com/resources/samples/Snake/res/values/attrs.html
<resources>
<declare-styleable name="TileView">
<attr name="tileSize" format="integer" />
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)
mGalleryItemBackground = 0;而且mTileSize = 12;?我的猜测是,他们希望能够在不触及Java代码的情况下改变一些东西.但是,我没有看到XML文件本身明确指定任何值.用于演示TypedArray和context.obtainStyledAttributes目的的代码示例非常有用.getResourceId技术,另一个是使用getInt技术?recycle?返回先前检索的StyledAttributes,以供以后重复使用.
我指的是为什么使用Fragment #setRetainInstance(boolean)?
我之所以这么说是为了Activity处理轮换,官方活动文档鼓励我们Activity在轮换期间关闭并重启.
android:configChanges列出活动将自行处理的配置更改.在运行时发生配置更改时,默认情况下会关闭并重新启动活动,但声明具有此属性的配置将阻止活动重新启动.相反,活动仍在运行,并调用其onConfigurationChanged()方法.注意:应避免使用此属性,并仅将其用作最后的手段.有关如何通过配置更改正确处理重新启动的详细信息,请阅读处理运行时更改.
任何尝试更改此活动默认行为似乎都是不好的做法.为避免Activity在重新启动期间重新加载耗时的数据结构,我们使用onRetainNonConfigurationInstance和getLastNonConfigurationInstance.- 官方处理运行时更改
但是,当在Fragment中处理轮换时,谷歌会给我们不同的推荐吗?他们不希望我们关闭并重启Fragment?
public Object onRetainNonConfigurationInstance()
此方法在API级别13中已弃用.请改用新的Fragment API setRetainInstance(boolean); 这也可以通过Android兼容包在旧版平台上使用.
setRetainInstance(true)处理轮换效果不错,为什么Google不将其作为Fragment的默认行为?我指的是这里的扩展/折叠动画代码.
虽然它有效,但它不能很好地完成工作.动画不流畅.
我做了一些登录代码.
public static void expand(final View v) {
v.measure(MeasureSpec.makeMeasureSpec(((View)v.getParent()).getWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(1024, MeasureSpec.AT_MOST));
final int targtetHeight = v.getMeasuredHeight();
v.getLayoutParams().height = 0;
v.setVisibility(View.VISIBLE);
Animation a = new Animation()
{
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
v.getLayoutParams().height = interpolatedTime == 1
? LayoutParams.WRAP_CONTENT
: (int)(targtetHeight * interpolatedTime);
Log.i("CHEOK", "E v.getLayoutParams().height = " + v.getLayoutParams().height);
v.requestLayout();
}
Run Code Online (Sandbox Code Playgroud)
将打印以下日志消息.
10-09 12:29:58.808: I/CHEOK(7874): E v.getLayoutParams().height = 0
10-09 12:29:58.808: I/CHEOK(7874): E v.getLayoutParams().height = 0
10-09 12:29:58.918: I/CHEOK(7874): E v.getLayoutParams().height = 11 …Run Code Online (Sandbox Code Playgroud) 在Java中,我使用
if (a != null && a.fun());
Run Code Online (Sandbox Code Playgroud)
通过充分利用短路评估和表达从左到右进行评估?
在C++中,我可以这样做吗?它们是否保证可以跨不同平台和编译器移植?
if (a != 0 && a->fun());
Run Code Online (Sandbox Code Playgroud) 以下代码基本上按预期工作.然而,为了偏执,我想知道,为了避免资源泄漏,
HttpURLConnection.disconnect完成使用后我需要打电话吗?InputStream.close吗?InputStreamReader.close吗?httpUrlConnection.setDoInput(true)并且httpUrlConnection.setDoOutput(false),在构建httpUrlConnection之后?我这么说的原因是,我看到的大部分例子都没有做过这样的清理.http://www.exampledepot.com/egs/java.net/post.html和http://www.vogella.com/articles/AndroidNetworking/article.html.我只是想确保这些例子也是正确的.
public static String getResponseBodyAsString(String request) {
BufferedReader bufferedReader = null;
try {
URL url = new URL(request);
HttpURLConnection httpUrlConnection = (HttpURLConnection)url.openConnection();
InputStream inputStream = httpUrlConnection.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
int charRead = 0;
char[] buffer = new char[1024];
StringBuffer stringBuffer = new StringBuffer();
while ((charRead = bufferedReader.read(buffer)) > 0) {
stringBuffer.append(buffer, 0, charRead);
}
return stringBuffer.toString();
} catch (MalformedURLException e) …Run Code Online (Sandbox Code Playgroud) 目前,我有经验,使用Google Drive API的一段代码在没有引入ProGuard的情况下运行正常.
但是,在引入ProGuard之后,我遇到了以下运行时错误.
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
at com.google.api.client.util.Types.getActualParameterAtPosition(Types.java:329)
at com.google.api.client.util.Types.getIterableParameter(Types.java:309)
at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:546)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:350)
at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:586)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:289)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:76)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:71)
at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:491)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:456)
at com.jstock.c.b.a(CloudFile.java:136)
Run Code Online (Sandbox Code Playgroud)
请注意,崩溃发生在我的代码中(如果我使用mapping.txt进行回溯,则为com.jstock.cba)
// request is Files.List
FileList files = request.execute();
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我认为有以下两个关键指令,能够防止崩溃发生:我告诉ProGuard永远不要触及jackson和Google库.
-keep class org.codehaus.** { *; }
-keep class com.google.** { *; }
-keep interface org.codehaus.** { *; }
-keep interface com.google.** { *; }
Run Code Online (Sandbox Code Playgroud)
但这不起作用.NPE仍然发生在Types.java上
请注意,我还有另一种尝试是,我认为混淆过程会导致NPE发生.因此,我尝试使用它来禁用它-dontobfuscate.但这一次,我将无法生成APK文件,并得到一个流行的错误消息:转换为Dalvik格式失败,错误1
以下是在Google Drive API中导致NPE的proguard配置.
-optimizationpasses 1 …Run Code Online (Sandbox Code Playgroud) android google-api proguard google-api-java-client google-drive-api
从https://node-postgres.com/features/connecting,似乎我们可以选择Pool或Client执行查询
pool.query('SELECT NOW()', (err, res) => {
console.log(err, res)
pool.end()
})
Run Code Online (Sandbox Code Playgroud)
client.query('SELECT NOW()', (err, res) => {
console.log(err, res)
client.end()
})
Run Code Online (Sandbox Code Playgroud)
它们的功能看起来非常相似.但是,文档并没有解释Pool和之间的差异Client.
可我知道,我应该考虑什么东西,之间做选择之前Pool还是Client?
我有以下HTML代码
<form action="/script/upload_key.py" method="POST" enctype="multipart/form-data">
Key filename: <input name="file_1" type="file">
<input name="submit" type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
这给了我以下的东西.

我在想
Submit按钮的需要.这意味着,一旦我Choose File,所选文件将立即上传?Google建议我们getLoaderManager().initLoader(0, null, this);在Fragment中进行调用onActivityCreated
http://developer.android.com/reference/android/content/AsyncTaskLoader.html
但是,这会产生以下问题:在配置更改期间将调用onLoadFinished两次(旋转)
我们可以按如下方式模拟问题.
package org.yccheok.gui;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.actionbarsherlock.app.SherlockFragment;
public class HomeMenuFragment extends SherlockFragment implements LoaderManager.LoaderCallbacks<HomeMenuFragment.Infos> {
private static class InfosLoader extends AsyncTaskLoader<Infos> {
private Infos infos = null;
public InfosLoader(Context context) {
super(context);
}
@Override
public Infos loadInBackground() {
Log.i(TAG, "loadInBackground");
this.infos = Infos.newInstance();
return infos;
}
/**
* Handles a request to cancel a …Run Code Online (Sandbox Code Playgroud) android ×6
java ×2
animation ×1
c++ ×1
google-api ×1
html ×1
javascript ×1
node.js ×1
proguard ×1