我有这样的代码:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(server);
try {
JSONObject params = new JSONObject();
params.put("email", email);
StringEntity entity = new StringEntity(params.toString(), "UTF-8");
httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
httpPost.setEntity(entity);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpClient.execute(httpPost, responseHandler);
JSONObject response = new JSONObject(responseBody);
fetchUserData(response);
saveUserInfo();
return true;
} catch (ClientProtocolException e) {
Log.d("Client protocol exception", e.toString());
return false;
} catch (IOException e) {
Log.d`enter code here`("IOEXception", e.toString());
return false;
} catch (JSONException e) {
Log.d("JSON exception", e.toString());
return false; …Run Code Online (Sandbox Code Playgroud) 我这里有一个应用程序,它具有在地图上显示POI的功能.它只是一个POI,只有当它实际位于可见屏幕区域内时才会被绘制.它可以完美地工作一段时间,但如果我在放大和缩小和拖动时玩,它最终会崩溃.根据Logcat,原因始终是OutOfMemory错误.
起初,我认为这是Google Maps API上的一个错误.经过一些研究和看到一些Romain Guy的帖子,我有点确信我在我的应用程序上做了一些愚蠢的事情让我不时耗尽内存.然后我用Heap Analyzer(Eclipse)运行了一些更详细的测试,我看到即使我有2+,有时还剩3+兆字节的可用内存,我仍然得到由OutOfMemoryError引起的恼人的Force Close消息.大多数时候,无论我剩下多少,它都会在尝试分配大约614kb的内存时崩溃.
这个问题在Nexus One 2.2.1和HTC Evo 2.1上发生了很多.经过一些小小的测试,我在G1 1.6和三星Galaxy S i9000 2.1上都没有崩溃.但我不能肯定地说G1和Galaxy在经过更多测试后不会出现这个问题.
我只能想到内存碎片问题.我希望这个问题有一个解决方案.如果我能抓住这个错误并阻止应用程序崩溃,我也会很高兴.
如果它有帮助,这里是logcat:
09-29 08:58:06.661: ERROR/dalvikvm-heap(1552): 648000-byte external allocation too large for this process.
09-29 08:58:06.661: ERROR/dalvikvm(1552): Out of memory: Heap Size=9991KB, Allocated=6980KB, Bitmap Size=14510KB
09-29 08:58:06.661: ERROR/(1552): VM won't let us allocate 648000 bytes
09-29 08:58:06.672: DEBUG/AndroidRuntime(1552): Shutting down VM
09-29 08:58:06.672: WARN/dalvikvm(1552): threadid=3: thread exiting with uncaught exception (group=0x4001b390)
09-29 08:58:06.672: ERROR/AndroidRuntime(1552): Uncaught handler: thread main exiting due to uncaught exception
09-29 08:58:06.681: …Run Code Online (Sandbox Code Playgroud) 我有一个包含大约200,000个长值的文件,我希望尽快将其读入long [].它适用于Android应用; 函数调用很慢(所以任何涉及用"for"循环一次读取很长时间的东西都会超级慢)我需要加载才能快速.我可以用什么?我看到的一切似乎只能快速读取字节.
我已经使用ByteBuffer并FileChannel从NIO包之前,这似乎是一个非常快的方式从文件加载值数组.但是,我无法弄清楚如何使用它来将数据读入long [].我已经尝试将long []包装为LongBuffer,但我无法看到任何可以将文件中的数据提供给LongBuffer的方法.
编辑:我使用哪种方法,我需要能够使用Arrays.binarySearch上long[]的高端磁盘阵列.
我在Ubuntu平台上,并且有一个包含许多.py文件和子目录(也包含.py文件)的目录.我想在每个.py文件的顶部添加一行文本.使用Perl,Python或shell脚本最简单的方法是什么?
我正在尝试创建从我的表中检索最大ID的方法,但我有问题.
这是我的方法.它工作正常,但返回值为0,
public int getLastId() {
openDB();
int id = 0;
final String MY_QUERY = "SELECT MAX(_id) AS _id FROM organize";
Cursor mCursor = mDb.rawQuery(MY_QUERY, null);
try {
if (mCursor.getCount() > 0) {
mCursor.moveToFirst();
id = mCursor.getInt(mCursor.getColumnIndex(MY_QUERY));
}
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
closeDB();
}
return id;
}
Run Code Online (Sandbox Code Playgroud)
我能解决这个问题,非常感谢
我是新来的,我已经阅读了很多你的帖子,但仍然没有找到问题的解决方案.
我正在为Android 2.2编写一个使用蓝牙连接到终端设备的应用程序.我有一个配对设备列表,我可以将我的Android平板电脑与我已知的每个设备连接起来.
我想做的是,只要Android-Tablet(顺便说一下整个通信中的Master)检测到其中一个已知的配对设备在范围内,就会自动连接终端设备.
一种可能性是不断轮询并试图看到谁在我附近,但是这会花费很多电池寿命,如果我使用其中一个终端设备进入范围而我的Android平板电脑不在中间轮询过程,我不会得到自动连接; 我不得不等到下一个轮询周期.
这个问题有什么解决方案吗?
我会像BT-Headsets和我的方便一样工作: - /
感谢您的回答,希望我们能够解决它!
有没有办法在基于Android/HTC Sense的手机中访问复制/粘贴api/UI?
我非常喜欢在使用Sense时长按在大画布上的方式.有没有办法以编程方式检测代码是否在基于Sense的手机上运行并调用这些API?
我这样创建一个ProgressDialogin onCreateDialog():
protected Dialog onCreateDialog(int id) {
if (id == DIALOG_PROGRESS_ID)
{
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage(getResources().getString(R.string.MyLabel));
dialog.setCancelable(false);
dialog.setIndeterminate(true);
return dialog;
}
}
Run Code Online (Sandbox Code Playgroud)
Android智慧(或严重缺乏它)决定缓存通过onCreateDialog()创建的每个对话框.因此,任何后续调用都会showDialog(DIALOG_PROGRESS_ID)导致使用相同的ProgressDialog实例,但动画已停止工作.
我试图重新设置不确定onPrepareDialog(),但这没有做任何事情.同样没有明显的方法来调用将重置动画的对话框实例.
protected void onPrepareDialog(int id, Dialog dialog)
{
//This doesn't do anything
if (id == DIALOG_PROGRESS_ID)
((ProgressDialog)dialog).setIndeterminate(true);
super.onPrepareDialog(id, dialog);
}
Run Code Online (Sandbox Code Playgroud)
编辑:但也许有一种方法可以获得ProgressBar本身并开始动画制作?所以在我问这个问题之后我尝试了以下内容:
@Override
protected void onPrepareDialog(int id, Dialog dialog)
{
if (id == DIALOG_PROGRESS_ID)
{
ProgressBar p = (ProgressBar) dialog.findViewById(android.R.id.progress);
if (p.getAnimation() != null)
p.startAnimation(p.getAnimation());
}
super.onPrepareDialog(id, dialog);
Run Code Online (Sandbox Code Playgroud)
} …
它看到我无法写入LG-P500(Android 2.2)中的设置.这是我的代码:
android.provider.Settings.System.putInt(getContentResolver(), android.provider.Settings.System.AUTO_TIME, 1);
Run Code Online (Sandbox Code Playgroud)
用于指定用户是否更喜欢从网络(NITZ)自动提取日期,时间和时区的值.1 =是,0 =否
它在我的模拟器android 2.2中工作正常我也尝试在其他手机,HTC android 2.1它也工作正常.
谁能知道会出现什么问题?非常感谢你.
所以这是我的 BroadcastReceiver
public class IncomingSMSListener extends BroadcastReceiver {
private static final String SMS_EXTRA_NAME = "pdus";
@Override
public void onReceive(Context context, Intent intent) {
SmsMessage[] messages = fetchSMSMessagesFromIntent(intent);
}
private SmsMessage[] fetchSMSMessagesFromIntent(Intent intent) {
ArrayList<SmsMessage> receivedMessages = new ArrayList<SmsMessage>();
Object[] messages = (Object[]) intent.getExtras().get(SMS_EXTRA_NAME);
for (Object message : messages) {
SmsMessage finalMessage = SmsMessage
.createFromPdu((byte[]) message);
receivedMessages.add(finalMessage);
}
return receivedMessages.toArray(new SmsMessage[0]);
}
Run Code Online (Sandbox Code Playgroud)
}
我能够很好地阅读传入的消息,但是从这里开始我想将消息转发到另一个电话号码并确保它已被发送.我知道我可以做SmsManager.sendTextMessage()但是如何设置PendingIntent要通知短信是否被发送通知的部分?