Articles of java的

当我使用带有ResultReceiver的IntentService时,我的Activity被销毁时会发生什么

我通过网络搜索了这个答案。 但没有find结果。 对不起,我是Java和Android编程的新手。 我会更详细地阐述我的问题。 假设我的Activity启动了一个IntentService,它在后台独立运行。 该服务“订阅”到ResultReceiver的回调以更新活动UI。 并且在服务执行长时间运行的过程中,Activity被销毁。 那么,如果服务通过ResultReceiver向活动发送回复或进度更新,会发生什么? 因为我知道,ResultReceiver需要有一个Activity的引用。 在我的项目中,我需要开发一个video剪辑消息应用程序。 当用户捕获video时,它会将数据传递给服务,服务将执行上传以及将一些信息保存到db ..同时继续通过ResultReceiver将进度更新发布到活动UI。 用户可以根据需要退出或终止活动。 但是当他们导航回应用程序/活动时,如果上传/下载仍在进行中,则需要显示当前进度。 最初我想到了Asynctask,但它也有类似我提到的问题。 它需要调用者Activity的引用。 有没有我能达到我提到的要求的地方? 对不起,很长的post。 希望有人可以启发我一点,有一些代码片段甚至更好。 非常感谢 :) 编辑:简而言之,有没有办法将新创建的Activity动态绑定到正在运行的IntentService,以便服务可以将进度更新发送到正确的Activity?

使用导航抽屉保存片段状态

我想在使用androids导航抽屉切换片段时保存片段的状态。 如果先前已加载片段,则不应刷新该片段。 可能吗?

Android – 激活系统密钥锁(又名锁屏)

我必须激活android的系统密钥锁(当您按下电源关闭 / 挂断按钮时获得的那个)。 看这里: 我已经浏览了文档,但我发现的一切都是PowerManager和KeyguardManager 。 两者似乎都不是解决方案:-(。 那么,每个人都知道如何从Android应用程序实现这一目标吗? (如果需要特殊权限,那没问题,但更改设备的设置不是解决方案……) 编辑 :或者有人知道这绝对不可能吗? 顺便说一句。 带发送密钥的craigs解决方案不再起作用(请参阅注释)。

Android注册安全提供程序

我试图了解java安全提供程序如何在android中工作。 我想强制所有对Cipher.getInstance()的调用返回一个带有海绵城堡作为提供者的密码。 我没有运气。 以下代码返回一个提供者为“AndroidKeyStoreBCWorkaround版本1.0”的密码,但我希望提供者是SpongyCastle。 我想这样做的原因是,我有一个多次调用javax.crypto.Cipher.getInstance()的库。 我希望所有这些调用都能进入海绵城堡,而无需重新编写库以明确指定“SC”作为提供者。 public class MainActivity extends Activity { static { Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); Security.removeProvider(“BC”); } @Override protected void onCreate(Bundle savedInstanceState) { try { //this returns provider = “AndroidKeyStoreBCWorkaround version 1.0” javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance(“AES/CTR/NoPadding”); //this works // cipher = javax.crypto.Cipher.getInstance(“AES/CTR/NoPadding”, “SC”); } catch(Exception e) { } } }

几个JSONObject键和值不会保存到Parse

我有一个带checkbox的适配器类,当选中该checkbox时,它会将JSONObject键和值推送到Parse。 在我的应用程序中,它只将一个键和值保存为Parse作为JSONObject,我希望我的应用程序在选择其他checkbox时将几个键和值保存到Parse中。 当我选择不同的checkbox时,它会更改单个键和值,而不是将另一个集添加到JSONObject Parse内部行的照片包括JSONObject 相反,当我选择其他具有不同键和值的checkbox时,我希望在Parse中使用JSONObject来保存这样的数据。 {“2c1”:true, “2c2”:true, “2c3”:true, “2c4”:true, “2c5”:true, “2c6”:true} 而不是仅仅拥有这一点 {“2c1”:true} 这是我的Adapter类中的代码 ChecklistAdapter.java final JSONObject myObject = new JSONObject(); try { myObject.put(dataRecord.getID(), true); } catch (JSONException e) { e.printStackTrace(); } checkBox.setOnClickListener(new View.OnClickListener() { String idSelected = dataRecord.getID(); public void onClick(View v) { if (((CheckBox) v).isChecked()) { ParseUser.getCurrentUser().put(“checklistData”, myObject); ParseUser.getCurrentUser().saveInBackground(); Toast.makeText(getContext(), idSelected, Toast.LENGTH_SHORT).show(); } […]

使用MediaPlayer作为源在Android上录制音频?

在Android上,您可以使用MediaRecorder类从麦克风录制音频:MediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 我想录制一些MediaPlayer实例播放的音频部分(或其他音频播放设备)。 那可能吗? 如何设置自定义音频源? 总结一下; 如何从任意音频源将音频流传输到MediaRecorder?

基于寄存器的VM与基于堆栈的VM之间的主要区别是什么?

今天我正在阅读一些关于Andoird基础知识的幻灯片 ,这句话出现了: Dalvik VM基于寄存器而不是基于堆栈。 那么, 基于寄存器的VM与基于堆栈的VM之间的主要区别是什么? 第二个链接回答了我的问题: http://markfaction.wordpress.com/2012/07/15/stack-based-vs-register-based-virtual-machine-architecture-and-the-dalvik-vm/ 另一个链接: http://androidjayavelu.blogspot.co.at/2011/06/dalvik-virtual-machine-vs-java-virtual.html

Android:EditText导致内存泄漏

我想首先说这是我第一次处理性能,因为这是我第一次开发Android应用程序。 该应用程序 该应用程序是一个源代码编辑器,您可以在其中打开文件,修改它们并将其保存回来。 该应用程序包含4个部分: 导航器视图:包含打开文件的ListView和打开文件夹的TreeView。 代码视图容器:这包含包含实际代码的视图。 代码容器:这是一个包含文本视图和自定义EditText的小视图(由我扩展EditText类创建,但它尚未实现,因此它的行为与EditText完全相同)。 TextView只显示代码行。 打开和保存片段:我使用了两个片段作为DialogFragment:保存片段允许您导航本地文件系统以及链接帐户的Dropbox文件系统并保存当前文件。 open片段允许您导航相同的文件系统并打开文件。 问题 完成基本代码编辑器后,我转到语法高亮。 现在,我想明确表示即使没有语法突出显示也会产生泄漏,所以这不是问题所在。 无论如何,通过测试语法highlithing,我打开“大”文件(1200行代码),我注意到应用程序变得非常慢,这是显而易见的,因为我正在整理整个文本(我将通过仅突出显示来避免这种情况)可见的文字)。 这促使我测试应用程序没有语法高度大文件,我发现应用程序变得有点慢,我注意到一些内存泄漏发生。 特别是,当我打开一个大文件(1200行代码)时,应用程序需要1秒钟才能在textview中显示代码行,当我输入字符的绘图时速度很慢。 另外,每当我键入删除字符时,就会发生内存泄漏。 检验 我试图检查堆(使用MAT),但正如我所说,我没有任何经验,我不知道如何调查这个问题。 对不起,我无法上传截图(没有stackoverflow的权限),但我可以报告一些数字: 系统在打开大文件之前 系统总览 泄密嫌疑人 问题1 细节: 问题2 问题3 最大的顶级支配者套餐 最大的对象 打开大文件后的系统 系统总览 泄密嫌疑人: 问题1 : 细节: 问题2 : 问题3问题4 最大的顶级支配者套餐 最大的对象 从Android设备监视器: 系统在打开大文件之前 打开大文件后的系统 分配的一些部分: 先谢谢你 编辑: 编辑 好的,我发现了这个问题。 如果你看到,每次输入内容时,我都会更新EditText行,因为文本很长(1200行),所以需要一段时间来重新计算它。 事情虽然关于那个! 我必须find一种更快的方式来显示代码行。 一种选择是为每一行使用一个TextView,这样我只更新需要更改的TextView。 但我不知道1200个TextView对象是不是很好。 package com.example.green.bachelorproject.customViews.codeEditView; […]

DatePickerDialog错误地强制执行1970年1月1日的最小日期

我们有一位成员报告他无法在我们的DatePickerDialog上设置1970年1月1日之前的日期。 这个问题不适合我们。 我已经知道DatePickerDialog没有公开底层DatePicker的setMinDate / setMaxDate函数,因此看起来某种手机制造商特定的修改会影响minDate / maxDate。 该用户报告他在运行2.2 Froyo的Verizon上运行Droid x2。 虽然我们认为他对他的设备型号的描述是正确的,但许多用户对操作系统版本感到困惑,因此他可能正在运行2.3。 我试图通过将此主题添加到我的Activity来解决此问题: 2025 1910 虽然我的活动中的这个主题具有在我的测试设备(Galaxy选项卡和原始的摩托罗拉Droid)上约束DatePickerDialog的预期效果,但它显然对用户没有影响。 这个问题在100%的时间内对我们的用户进行了重复,但在我们自己的设备上正常运行。 谁能解释可能导致这种情况的原因以及我们如何解决这个问题? 我已就此事向Google提出此错误 。 谢谢!

jquery signalr客户端工作 – 但在java中它无法工作

我们有一个SignalR中心。 以下jQuery代码在cordova上成功连接并正确处理SignalR客户端“调用”事件。 var connectionURL = “https://SOMEURL.azurewebsites.net/message”; connection = $.connection(connectionURL); connection.start().done(function () { console.log(“Connected to hub again”); }); connection.disconnected(function () { setTimeout(function () { connection.start().done(function () { console.log(“Disconnected and Connected to hub again”); }); }, 5000); }); connection.stateChanged(function (change) { if (change.newState == $.signalR.connectionState.reconnecting) { } else if (change.newState == $.signalR.connectionState.connected) { } else if (change.newState […]