我遇到过这一系列遗留代码,我想弄清楚:
String newString = new String(oldString.getBytes("UTF-8"), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)
据我所知,它是使用相同的charSet进行编码和解码.
这与以下有什么不同?
String newString = oldString;
Run Code Online (Sandbox Code Playgroud)
是否存在两条线路具有不同输出的情况?
ps:只是为了澄清,是的,我知道Joel Spolsky关于编码的优秀文章!
我有一个关于开始逐帧动画的基本问题.
当我直接从我的代码调用AnimationDrawable.start()方法时,它似乎不起作用.
public void onCreate(Bundle savedInstanceState) {
...
mAnimation.start();
...
}
Run Code Online (Sandbox Code Playgroud)
但是如果我把这一行放在按钮的onClick()回调方法中,按下按钮就会启动动画.
为什么这行不在代码中?
谢谢!
public class MyAnimation extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
AnimationDrawable mframeAnimation = null;
super.onCreate(savedInstanceState);
setContentView(R.layout.my_animation);
ImageView img = (ImageView) findViewById(R.id.imgMain);
BitmapDrawable frame1 = (BitmapDrawable) getResources().getDrawable(
R.drawable.splash1);
BitmapDrawable frame2 = (BitmapDrawable) getResources().getDrawable(
R.drawable.splash2);
int reasonableDuration = 250;
mframeAnimation = new AnimationDrawable();
mframeAnimation.setOneShot(false);
mframeAnimation.addFrame(frame1, reasonableDuration);
mframeAnimation.addFrame(frame2, reasonableDuration);
img.setBackgroundDrawable(mframeAnimation);
mframeAnimation.setVisible(true, true);
//If this line is inside onClick(...) method of a button, animation works!! …Run Code Online (Sandbox Code Playgroud) 我有一个设计问题.我需要实现一个监听器.我看到了以下SO问题: 如何在android中创建自己的Listener接口?
但是在答案中提供的链接中,作者创建了一个只扩展系统定义的侦听器的侦听器.例如onClick,你会做一些验证然后调用另一个名为"whenValidatedListener"的方法
我需要定义未链接到现有事件侦听器的侦听器.基本上会在本机(C/C++)代码中进行一些处理,在Android代码中我需要一个监听器来响应来自它的某些消息.
我想我可以使用处理程序来做到这一点.但AsyncTask是多线程推荐的方法.
有没有办法使用AsyncTask实现用户定义的侦听器?
在活动的onDestroy()回调中专门将实例变量设置为null是一个好主意吗?像这样的东西:
@Override
protected void onDestroy() {
super.onDestroy();
mClassVariable1 = null;
mClassVariable2 = null;
mClassVariable3 = null;
}
Run Code Online (Sandbox Code Playgroud)
如果我从Java SE中正确记得,任何被隔离但未连接到正在运行的程序的引用都可以进行垃圾收集.那么这会使上述多余吗?
另一方面,移动设备的生命周期不同,以上是最佳实践吗?
我知道这样做不会有什么坏处,但有时会有一些类变量(对单个UI元素的引用等),所以我真的想知道我自己的理解,真正发生了什么.
提前致谢!
我想根据从程序的其他部分收到的提示向用户显示消息.可以有许多提示,它们存储在枚举中.
这些是我的提示:
Defs.java
public enum Prompt
{
PromptA,
PromptB,
PromptC,
}
Run Code Online (Sandbox Code Playgroud)
我将外化字符串存储在这些行的资源中:
RES /值/ strings.xml中
<string name="PromptA">Error in execution</string>
<string name="PromptB">Process completed successfully</string>
<string name="PromptC">Please try again</string>
Run Code Online (Sandbox Code Playgroud)
现在在我的主Activity屏幕中,一个方法被其他部分调用:
public void showPrompt(Prompt prompt) {
String message = getString(R.string.<**what-do-I-put-here?**>);
//show a dialog box with message
}
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过一个巨大的if-else块(实际应用程序中有大量提示)或switch语句来完成.这真的很难看.
有一个更好的方法吗?
我能够对参数字符串进行POST.我使用以下代码:
String parameters = "firstname=john&lastname=doe";
URL url = new URL("http://www.mywebsite.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
connection.setRequestMethod("POST");
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write(parameters);
out.flush();
out.close();
connection.disconnect();
Run Code Online (Sandbox Code Playgroud)
但是,我需要对二进制数据进行POST(以byte []的形式).
不知道如何更改上面的代码来实现它.
有人可以帮我这个吗?
我的XML布局文件中有以下TextView: -
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/autolink_test"
android:autoLink="all"
/>
Run Code Online (Sandbox Code Playgroud)
字符串autolink_test包含电话号码,电子邮件地址,网站地址和物理地理地址.
虽然前三个正确显示为可点击的自动链接,但地址却没有.只有邮政编码部分显示为自动链接......这也是电话号码!(当我点击它时,电话拨号器会以该号码启动).
任何帮助,将不胜感激.
我有一个CPU密集型长时间运行操作(几个小时),我正在使用AsyncTask执行.随着它的继续,它会更新屏幕上的进度条以显示完成任务的百分比.
我发现当我的屏幕进入睡眠状态(超时)时,任务似乎停止了.不确定这是否因为AsyncTask停止或者在尝试更新屏幕时遇到困难(后者我在考虑).
除了永远不让屏幕睡眠,我怎么能阻止我的AsyncTask停止执行?如果这是唯一的方法,那么我如何确保屏幕不睡觉?
编辑:我必须补充一点,我知道这听起来像一个非用户友好的应用程序,由下面的人评论.这是一项非常专业的任务(处理数千个图像文件以比较不同系统上的处理),并由内部的一些用户使用,而不是公开发布.
我在imageview中运行的动画拒绝保持图像帧的宽高比.SO中的以下答案非常有用,但似乎对我不起作用: 如何在ImageView中缩放图像以保持宽高比
这是代码:
private void startAnimation(){
mImageView.setAdjustViewBounds(true);
mImageView.setScaleType(ScaleType.CENTER);
mImageView.setBackgroundResource(R.anim.my_animation);
AnimationDrawable frameAnimation = (AnimationDrawable) mImageView.getBackground();
// Start the animation (looped playback by default).
frameAnimation.start();
}
Run Code Online (Sandbox Code Playgroud)
R.anim.my_animation只是一个动画列表:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selected"
android:oneshot="false">
<item
android:drawable="@drawable/photo_1"
android:duration="100" />
<item
android:drawable="@drawable/photo__2"
android:duration="100" />
... and so on...
</animation-list>
Run Code Online (Sandbox Code Playgroud)