Articles of java的

在Android / Java中格式化MAC地址,而不会产生不必要的垃圾

我正在开发一个Android应用程序,它需要每秒处理数千个数据包,同时提取和格式化每个帧的MAC地址。 问题是垃圾收集器每秒运行十几次并拖延我的应用程序,这反过来让我错过了数据包。 我避免创建新对象(我认为)可能。 我在DDMS中使用了分配跟踪器,并确定要清理的99%的垃圾来自以下方法。 这是我正在使用的代码: void parseMac() { hex_sb.setLength(0); for (hex_counter = 0; hex_counter < 6; hex_counter++) { hex_sb.append(String.format("%02X", parser_packet_bytes[parser_skip + hex_counter])); if (!(hex_counter == 5)) { hex_sb.append(":"); } } formatted_mac = hex_sb.toString(); } hex_sb是一个StringBuilder,可以重用。 hex_counter是MAC地址中的字节数(字节来自parser_packet_bytes,byte [])。 如果它不是MAC的最后一个字节,请附加“:”以进行正确的格式化。 formatted_mac是一个类范围的String,用于存储格式化的MAC。 根据分配跟踪器,唯一的问题是使用String.format的行。 我对StackOverflow专家的问题是:如何重写上面的方法,以便创建更少(最好没有)垃圾?

AndroidJUnit4.class + org.junit.Assume.assumeTrue = AssumptionViolatedException

我已经设法让我的Android项目转换到JUnit4,当然我想要做的主要原因是没有用。 如果有人在这里有想法,会喜欢任何帮助。 我试图解决的问题是,如果构建未指向登台服务器,我想自动跳过某些测试。 我已经设置了一个BUILD_TYPE ,它使用gradle来注入基本URL。 我在我的设置中设置了一个assumeThat子句,它正确识别构建何时不进行分段,但不是暂停和忽略其余的测试,而是抛出exception并失败。 这是我的实时API测试的基类 – 我用@RunWith(AndroidJUnit4.class)注释了这一点,所以理论上应该始终使用JUnit4运行器: package com.[my package].nonuitests.liveservertests; import android.support.test.runner.AndroidJUnit4; import com.[my package].nonuitests.BaseAndroidTest; import org.junit.Test; import org.junit.runner.RunWith; /** * Tests against the live API. All tests descending from this class will * be ignored if the BUILD_TYPE is not staging. */ @RunWith(AndroidJUnit4.class) public class BaseLiveServerTests extends BaseAndroidTest { private static final […]

NullPointerExceptions仅适用于某些三星Galaxy设备?

我正在使用LibGDX。 当我的应用程序启动时,它会创建一个屏幕。 加载Screen时,它会调用静态函数Module.createStyles() 。 这个函数创建了一系列样式,这些样式将在整个应用程序的其余部分使用(内置的LibGDX样式,如WindowStyle,LabelStyle,TextButtonStyle – 用于创建用户界面对象的所有types的东西)。 屏幕完成后,它会调用Module.disposeStyles() 。 无论如何,根据我的Google Analytics崩溃报告,我在尝试使用Module.dialogStyle创建一个Dialog时会随机获取NullPointerException : ExitDialog exitDialog = new ExitDialog(“Are you sure?”, Module.dialogStyle); Thread: GLThread 2089, Exception: java.lang.IllegalArgumentException: style cannot be null. at package.Window.setStyle(Window.java:181) at package.Window.(Window.java:63) at package.Dialog.(Dialog.java:65) at package.ExitDialog$1.(ExitDialog.java:38) Module.dialogStyle绝对没有理由为null。 我将此字段置空的唯一位置是在Module.disposeStyles() ,此函数仅在应用程序的一个特定位置(最后)调用。 我认为这是我的代码中的一个错误,即使95%的用户从未体验过它。 然而,所有5%的用户体验它似乎是Galaxy用户,我不确定这是不是巧合: Galaxy S4 Galaxy S III GALAXY Tab 3 lite 有人有主意吗? Galaxy设备没有内置的RAM管理器吗? 这会与此有关吗?

如何在jackson的@JsonAnySetter中获取Gson中无法识别的JSON字段列表?

所以我目前在我的android项目中使用Jackson解析器及其库。 然而,看看jackson和gson的方法计数让我思考如何转移到gson。 在查看了不同的方法/语法等之后,我一直无法find与Jackson的@JsonAnySetter或@JsonAnyGetter等效的gson。 这对gson有用吗? 如果没有,是否有解决方法?

将实时数据从java发送到android应用程序

我需要实时将数据从java应用程序发送到Android应用程序。 数据不大(0和9内的整数)但传输次数很高,大约每秒传输5次。 我希望有一个发布者订阅者模型。 Java应用程序将数据推送到Android应用程序,而不是Android应用程序持续ping数据的Java应用程序。 传输必须是实时的,并且将通过LAN发生。 尝试使用GCM但不是实时的。 Pubnub是另一个,但不确定它将是多么实时。 如何进行 ?

从后台恢复活动后,DrawerLayout或TabLayout为null?

每当我最初创建我的活动时,一切都很顺利,因为我能够正确地扩充我的布局。 然而,问题是每当我切换到使用另一个应用程序,然后回到我自己的应用程序,我得到一个错误说TabLayout为空,导致我的应用程序崩溃。 如果我切换到另一个应用程序几分钟,我的DrawerLayout为空,也导致我的应用程序崩溃。 如果我正确理解Android生命周期,我意识到当活动从背景到前景时重新创建活动,并且再次调用onCreate方法,如下所示: Android活动生命周期 – 所有这些方法是什么? 。 但是,我不明白为什么当应用程序启动时,一切正常,但当我进入后台时, TabLayout或DrawerLayout都设置为null。 这是我的尝试: news_feed.java: private static DrawerLayout drawer; private static TabLayout tabLayout; public class news_feed extends BatchAppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.news_feed); drawer = (DrawerLayout) findViewById(R.id.drawer_layout); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //Listen for navigation events ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, […]

PEM到Android中的PublicKey

我见过很多类似的问题,但没有什么对我有用。 我只是尝试将我从服务器检索到的PEM格式的RSA公钥转换为Android中的PublicKey 。 谁能指出我正确的方向? 编辑:我已成功使用以下代码将PEM转换为PublicKey,但在编码消息时,我得到意外的输出… public PublicKey getFromString(String keystr) throws Exception { // Remove the first and last lines String pubKeyPEM = keystr.replace(“—–BEGIN PUBLIC KEY—–\n”, “”); pubKeyPEM = pubKeyPEM.replace(“—–END PUBLIC KEY—–“, “”); // Base64 decode the data byte [] encoded = Base64.decode(pubKeyPEM); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(encoded); KeyFactory kf = KeyFactory.getInstance(“RSA”); PublicKey pubkey = kf.generatePublic(keySpec); […]

Android Webview无法在Android 4.4上运行

我正在开发一个基于Webview的Android应用程序。 一切都在Android 4.1上运行良好,但在4.4上它会抛出这个错误。 01-29 11:16:03.075:E / eglCodecCommon(2179):glUtilsParamSize:unknow param 0x00000bd0 01-29 11:16:03.095:E / eglCodecCommon(2179): * * ERROR unknown type 0x10037(glSizeof,72) 如果我取消注释这行,它’工作但(逻辑上)没有显示任何东西 webview.loadUrl(“file:///android_asset/html/index.html”); Webview配置代码如下所示。 webview = new WebView(this); webview.clearCache(true); webview.clearHistory(); WebSettings webSettings = webview.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); webview.setWebViewClient(new WebViewClient()); //webview.setWebChromeClient(new WebChromeClient()); webview.addJavascriptInterface(new JavaScriptInterface(this), “Android”); setContentView(webview); webview.loadUrl(“file:///android_asset/html/index.html”); HTML代码完全正确 My Web App activeId = “contentOne”; passiveId = “contentTwo”; swiping = […]

在Android中,是否有理由将字符串资源用于不会被翻译的字符串?

我想知道在Android代码中使用java文件中定义的字符串有什么缺点。 我喜欢使用普通的旧Java字符串来处理那些不可见的字符串,例如我正在解析的XML文档中的名称,或者用于bundle的键。 将所有这些内容保存在使用它们的java文件中而不是将它们移动到XML文件中并使代码更复杂似乎是个好主意。 然而,我看到许多Android代码示例似乎将每个字符串放入资源文件中。 在java文件中使用字符串有什么问题? 人们不这样做的原因是什么? 我一直在我的应用程序中这样做,到目前为止还没有看到任何问题。 请注意,我知道XML文件对于需要翻译的内容非常有意义。 这个问题适用于字符串保持不变的情况。 让我试着让这个问题更清楚: 有什么理由除外 : 因为它是标准/最佳实践等 – 我的问题基本上是:为什么它是最佳实践,仅仅因为i8n,还是有其他原因? 因为它允许您使用资源框架进行翻译,依赖于设备的字符串等。 因为它允许您使用非ASCII字符。

iText Android – 将文本添加到现有PDF

我们有一些带有一些字段的PDF来收集一些数据,我必须通过在Android上的iText以编程方式填写它,在这些位置添加一些文本。 我一直在考虑实现这一目标的不同方法,但每种方法都没有成功。 注意:我的大多数测试都使用Android版iText(iTextG 5.5.4)和三星Galaxy Note 10.1 2014(Android 4.4)。 我从一开始就采用的方法是在给定页面上“绘制”给定坐标上的文本。 这对字段的管理有一些问题(我必须知道字符串的长度,并且很难将每个文本放在pdf的精确坐标中)。 但最重要的是,在某些设备/ OSVersions中,该过程的性能非常慢(在Nexus 5和5.0.2中效果很好,但在Note 10.1上使用5MB Pdf需要几分钟)。 pdfReader = new PdfReader(is); document = new Document(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); pdfCopy = new PdfCopy(document, baos); document.open(); PdfImportedPage page; PdfCopy.PageStamp stamp; for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) { page = pdfCopy.getImportedPage(pdfReader, i); // First page […]