Articles of java的

Android NotSerializableException为对象引发

在我的Android应用程序中,我使用文件来存储许可证数据 。 我使用Serialize对象 。 我创建一个Device对象并将文件详细信息读入该对象。 Device类实现Serializable 。 public class MyDevice implements Serializable {} 但是在应用程序开始时,它反序列化并存储在MyDevice对象中。 我的deserializeObject方法如下。 public MyDevice deserializeObject() { File SerialFile = new File(GeoTrackerPaths.FILE_PATH); MyDevice AndDeviceIn = new MyDevice(); if (SerialFile.exists()) { try { FileInputStream fileIn = new FileInputStream(GeoTrackerPaths.FILE_PATH); ObjectInputStream objInput = new ObjectInputStream(fileIn); AndDeviceIn = (MyDevice) objInput.readObject(); objInput.close(); fileIn.close(); } catch (Exception e) { […]

活动结束时服务停止

我已经阅读了一些与这个问题相关的答案,它们似乎都是一样的: “START_STICKY运行您的服务” “在前台运行您的服务” “使用startService运行您的服务,不要绑定它” 我正在做所有这些事情,我的服务STILL关闭并在每次关闭活动时重新启动。 这不是IntentService。 除了onClick处理程序之外,我也没有在任何地方调用stopSelf或stopService。 请向下滚动到我的更新 – 此行为已被确认为Android操作系统中的错误,我已将其报告给谷歌。 点击此处查看报告。 从MainActivity启动我的服务: svcIntent = new Intent(getBaseContext(), MyService.class); startService(svcIntent); 在我的onStartCommand中: // Enter foreground state String title = “Service has been started…”; String subject = “Service is running…”; String body = “Monitoring your battery usage.”; Notification notification = new Notification(R.drawable.theicon, title, System.currentTimeMillis()); if (prefs.getBoolean(“notificationSounds”, true)) notification.defaults |= […]

在Parse上使用Google+登录

我知道这个问题已被提出,但我找不到任何解决方案。 我正在使用Parse,用户可以使用Facebook,Twitter和Google+登录。 截至目前,只有Facebook和Twitterfunction齐全。 我已设法通过以下方式使用Facebook和Twitter登录: private void onLoginButtonClicked() { LoginActivity.this.progressDialog = ProgressDialog.show( LoginActivity.this, “”, “Logging in…”, true); List permissions = Arrays.asList(“public_profile”, “user_about_me”, “user_relationships”, “user_birthday”, “user_location”); ParseFacebookUtils.logIn(permissions, this, new LogInCallback() { @Override public void done(ParseUser user, ParseException err) { LoginActivity.this.progressDialog.dismiss(); if (user == null) { Log.d(IntegratingFacebookTutorialApplication.TAG, “Uh oh. The user cancelled the Facebook login.”); } else if […]

如何使用ProGuard进行模糊处理,但在测试时保持名称可读?

我正在使用我的应用程序进行预发布阶段,我开始编译发布版本assembleRelease而不是assembleDebug 。 然而,混淆破坏了事情,很难破译什么是什么。 调试几乎是不可能的,即使行号保持variables类是不可读的。 虽然发布版本不稳定但我想让混淆不那么痛苦,但它应该仍然表现得像完全混淆一样。 通常,ProGuarded版本会转换名称 net.twisterrob.app.pack.MyClass 至 bacba reflection和Android布局/菜单资源可以打破,如果他们遇到我们没有保留名称的类。 对于预发布测试来说,能够对代码进行模糊处理会非常有帮助,但“不是那么多” ,比如从 net.twisterrob.app.pack.MyClass 至 net.twisterrob.app.pack.myclass // or ntapMC or anything in between 🙂 proguard -dontobfuscate当然有帮助,但是它会使所有破碎的东西再次起作用,因为类名是正确的。 我正在寻找的东西将破坏完全混淆会破坏的东西,但同时很容易弄清楚什么是没有使用mapping.txt,因为名称是人类可读的。 我正在寻找http://proguard.sourceforge.net/manual/usage.html#obfuscationoptions但是-*dictionary选项似乎并没有这样做。 我可以自己生成一个重命名文件(它只是运行所有类并给它们一个toLowerCase或其他东西): net.twisterrob.app.pack.MyClassA -> myclassa net.twisterrob.app.pack.MyClassB -> myclassb 那么问题是如何将此类文件提供给ProGuard以及格式是什么?

ProcessException:ExecException:进程’command’/ Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Content/Home/bin/java

我得到例外: Error:Execution failed for task ‘:app:dexDebug’. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/bin/java” finished with non-zero exit value 2 在我将Google Play服务更新为7.5.0 : compile ‘com.google.android.gms:play-services:7.5.0’ 但如果我改回来: compile ‘com.google.android.gms:play-services:7.0.0’ 一切正常,如果我在项目中添加Google Cloud后端模块,我也面临同样的问题。

如何在Android Map中运行Google Mapanimation时禁用触摸检测

当我使用下面的方法在谷歌地图上执行animation时,如果我们在animation执行时触摸屏幕,则animation结束。 googleMap.animateCamera( CameraUpdateFactory.newCameraPosition(cameraPosition1),400, new CancelableCallback() { @Override public void onFinish() { } @Override public void onCancel() { } }); 我尝试使用下面的代码禁用触摸检测 mapFragment.getView().setEnabled(false); googleMap.getUiSettings().setAllGesturesEnabled(false); 但应用程序检测到触摸,尽管上面的行。 你如何正确地禁用触摸?

升级到AppCompat v22.1.0,现在出现“删除属性”错误

我刚刚升级了我的应用程序以使用AppCompat v22.1.0,我从AppCompat布局XML文件中获得以下exception: removing attribute http://schemas.android.com/apk/res/android:layout_marginEnd from removing attribute http://schemas.android.com/apk/res/android:textAlignment from removing attribute http://schemas.android.com/apk/res/android:layoutDirection from 我升级到JDK的v1.8版本,但也无法正常工作。

本机堆android OOM硬件加速

首先,我使用的是运行android 4.4(kitkat)的Nexus 7(2013年的1080p屏幕),并使用eclipse和windows的adb插件(64bit我认为)。 我的应用程序minSdkVersion设置为11,仅在横向操作。 问题是我的应用程序运行一段时间后,我一直收到OOM错误。 我的dalvik堆保持不变大约25~MB但是使用Debug.getNativeHeapAllocatedSize()和Debug.getNativeHeapSize()它表示我的本机堆大小不断增加,直到应用程序从OOM错误崩溃。 我通过在我的清单中声明android:hardwareAccelerated =“true”并在我的SurfaceView构造函数中使用setLayerType(View.LAYER_TYPE_HARDWARE,null)来使用硬件加速来将其设置为硬件加速。 (使用setLayerType(View.LAYER_TYPE_HARDWARE,null)是我的问题,我删除它并且内存泄漏停止)。 奇怪的是,一旦我按下主页按钮然后返回到我的应用程序,本机堆重置为其初始值。 我的certificatedalvik堆保持不变,本机堆正在增长来自LogCat中的这些消息: debug.native heap:分配191.45MB的191.73MB(0.28MB免费)debug.VM堆内存:分配23.00MB VM堆大小:31.00MB MaxHeapSize:192.00MB:availMemory 634.95MB,lowMemory? false,阈值96.00MB:canvas.isHardwareAccelerated()= true:GC_FOR_ALLOC释放4566K,30%释放22608K / 32236K,暂停32ms,总共32ms:debug。 =================================:debug.native heap:分配197.01MB的197.27MB(0.26MB免费) :debug.VM堆内存:分配22.00MB VM堆大小:31.00MB MaxHeapSize:192.00MB:availMemory 629.38MB,lowMemory? 假,门槛96.00MB 然后,一旦本机堆已满,我就会收到错误: 01-03 17:18:23.424: A/libc(15604): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 15604 (ebe.kingscastle) 01-03 17:18:23.524: I/DEBUG(176): *** *** *** *** *** *** *** *** *** *** *** […]

DocumentFile RandomAccessFile

有没有办法从给定的DocumentFile获取RandomAccessFile ? 我知道可以通过getUri获取InputStream InputStream inputStream = getContentResolver().openInputStream(DocumentFile.getUri()); 但我需要一个RandomAccessFile 谢谢你的帮助, 延

运行JNI android app A / libc时收到错误消息:0xdeadd00d(代码= 1)的致命信号11(SIGSEGV),线程17729

当我运行Android应用程序时,我遇到了一个错误,我使用了JNI函数和c ++代码。 当它运行时,我收到以下消息: 致命信号11(SIGSEGV)在0xe480001d(代码= 1),线程5465 最后这是我的代码: JNIEXPORT jstring JNICALL Java_ir_bassir_ndktest4_MainActivity_getName (JNIEnv *env, jobject obj){ jclass cls = (*env)->GetObjectClass(env, obj); jmethodID mid = (*env)->GetStaticMethodID(env, cls, “testJava”, “([Ljava/lang/String)[Ljava/lang/String”); jstring plainText = (*env)->NewStringUTF(env, “Hello from JNI ! Compiled with ABI 2222 “); jstring result = (*env)->CallStaticObjectMethod(env, cls, mid, plainText); return (*env)->NewStringUTF(env, plainText); } 在Java方面: public class MainActivity extends […]