如何在不丢失所有自定义的情况下将Eclipse从Indigo升级到Juno?
我尝试过两种不同的东西,但都不起作用:
每次升级都必须从头开始,这太烦人了......
我正在构建一个基于Android的系统,需要通过二进制协议发送数据.我希望会有许多版本的多种协议以及维护它们的噩梦.
在我看来,通过使用Java的二进制兼容性,我可以回避大部分版本控制问题.
假设应用程序A
依赖于库L
. L
包含C
用于A
实现接口的类I
.我建立既L
和A
,与定义I(0)
的接口I
.我安装L(0)
,并A(0)
在设备上.A(0)
动态绑定L(0)
哪个提供类C(0)
.
现在,我扩展接口I
,添加例如两个新方法.当我尝试编译时L
,编译失败,因为C
没有实现新方法.我修复L
,通过扩展C
,它实现了两个新方法.我现在编译L(1)
反对I(1)
,并在设备上安装它.
注意,此时,A
不会编译反对I(1)
.尽管如此,如果这是Java,A(0)
将使用C(1)
from 绑定并正确运行L(1)
.
对于Java的实现,JLS第13章二进制兼容性保证了这种行为(以及更多).如果它适用于DEX和Dalvik,那么我可以使一大类协议更改对客户完全不可见.
那么,问题是,DEX和Dalvik是否遵守JLS二进制兼容性规范?如果没有,是否有指定DEX/Dalvik二进制兼容性的文件?
我正在使用Android Lollypop JobScheduler
.Android Studio正在标记此代码:
JobScheduler js = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
Run Code Online (Sandbox Code Playgroud)
......作为一个错误.它汇编很好.然而,工作室认为它了解所有法律服务,并标记它.
我猜这是一个"检查".我搜索了检查错误消息,开始"必须是:Context.POWER_SERVICE之一"并没有找到任何内容.
这引出了我的具体问题:"我怎么能关闭这个,特别是烦人的错误".此外,更一般的问题是:"一般来说,如果检查让我烦恼,我怎么找到它,以便我可以把它关掉?"
我有一个像这样的服务:
<service
android:name="com.myFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
然后我实现onBind
这样:
private final IBinder mBinder = new LocalBinder();
private myListener mListener;
public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}
public void setListener(myListener listener) {
mListener = listener;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (mListener != null) mListener.onMessageReceived(remoteMessage);
}
Run Code Online (Sandbox Code Playgroud)
这很简单:Activity绑定到Service并设置一个监听器.当服务收到消息时,它只是触发监听器
现在最大的问题是:如果活动突然崩溃会发生什么? 在那种情况下mListener
会指出一些不存在的东西,不是吗?
如何,在调用之前mListener.onMessageReceived(remoteMessage)
,我可以检查绑定的Activity是否还活着?
android ipc android-service android-service-binding bindservice
当我关闭互联网连接并从 Firebase 应用注销时,我无法退回我的应用。
还得到下一个错误:
2019-11-05 20:26:19.364 5593-5611/com.mandarine.target_list E/System:
Uncaught exception thrown by finalizer 2019-11-05 20:26:19.3655593-5611/com.mandarine.target_list E/System:
java.lang.NullPointerException: Null reference used for synchronization (monitor-enter)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.finalize(ConscryptFileDescriptorSocket.java:1053)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:252)
at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:239)
at java.lang.Daemons$Daemon.run(Daemons.java:105)
at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)
它仅在我关闭 Internet 时发生。
我也发现了这个:https : //github.com/google/conscrypt/blob/master/common/src/main/java/org/conscrypt/ConscryptFileDescriptorSocket.java#L1079
但真的不知道该怎么做必须得到
我也做了/gradlew app:androidDependencies
并得到:
> releaseUnitTestRuntimeClasspath - Dependencies for runtime/packaging
> +--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.50@jar
> +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50@jar
> +--- com.firebaseui:firebase-ui-auth:4.3.1@aar
> +--- androidx.navigation:navigation-ui-ktx:2.0.0@aar
> +--- androidx.navigation:navigation-ui:2.0.0@aar
> +--- com.google.android.material:material:1.0.0@aar
> +--- me.zhanghai.android.materialprogressbar:library:1.4.2@aar
> +--- androidx.appcompat:appcompat:1.0.2@aar
> +--- androidx.constraintlayout:constraintlayout:1.1.3@aar
> +--- …
Run Code Online (Sandbox Code Playgroud) android garbage-collection finalizer nullpointerexception kotlin
我正在使用包含软件开发工具包 (SDK) 的文件夹,并尝试使用 git 将其备份到我用作 git 遥控器的笔记本电脑中的另一个文件夹中。我用过git add *
。似乎一切正常,我没有收到错误或警告。然后我将遥控器克隆到另一个文件夹中,并尝试编译,但收到错误消息,提示文件丢失。原来是git中缺少一个文件夹。
知道我做错了什么吗?
cd /home/ubuntu/backup
mkdir yamit
cd yamit
git init
git add *
git commit -m "first backup"
git remote add yamit /home/ubuntu/backup/yamit.git
git push -u yamit master
Run Code Online (Sandbox Code Playgroud) 是否可以根据所选的手机语言运行功能?
我有3种支持的语言.所以我有3个不同的功能,我想运行.
谢谢
我有两节课,A1
和A2
.两者都继承自BaseActivity
,而继承自AppCompatActivity
.
BaseActivity
有大量的日志记录语句跟踪,例如,活动生命周期方法.像这样:Log.d(tag, "in onCreate");
这些消息按预期记录,A1
但不是从A2
!我试过从AS和命令行监视logcat.我可以在几个Android模拟器和几个开发环境中重复这个问题.
如果我只是取代,例如,Log.d(tag, "in onCreate")
与System.out.println(tag + ": in onCreate")
所有的预期消息的出现.
在这一点上,完全神秘莫测.有人对我的日志消息的去向有任何建议吗?
编辑添加:
我已经用Log.d
以下方法调用替换了所有调用:
private void log(String message) {
Log.d("LOGGER", tag);
Log.d(tag, message);
System.out.println(tag + ": " + message);
}
Run Code Online (Sandbox Code Playgroud)
以下是两个子类的示例输出:
07-09 10:26:42.036 9657-9657/net.callmeike.android.latest D/LOGGER: A1
07-09 10:26:42.036 9657-9657/net.callmeike.android.latest D/A1: in onCreate
07-09 10:26:42.036 9657-9657/net.callmeike.android.latest I/System.out: A1: in onCreate
07-09 10:27:10.837 9657-9657/net.callmeike.android.latest D/LOGGER: A2
07-09 10:27:10.837 9657-9657/net.callmeike.android.latest I/System.out: …
Run Code Online (Sandbox Code Playgroud)