我遇到了https://blog.joda.org/2009/11/why-jsr-310-isn-joda-time_4941.html.
1)我目前正在将Java Calendar迁移到joda-time.我想知道,我应该使用threeten而不是joda-time吗?三生产准备好了吗?
2)三个库和joda-time库可以在同一个应用程序中一起存在吗?因为我正在使用一些使用joda-time库的第三方库.
3)joda-time会不会成为一个放弃项目,因为有三个?
目前,我有一段代码,设计用于在Android 2.3和4+中运行
如果android:largeHeap在AndroidManifest.xml中应用代码,代码将执行得更好(大多数情况下它不会有OutOfMemory异常).
<application
android:name=".MyApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:screenOrientation="nosensor"
android:largeHeap="true"
Run Code Online (Sandbox Code Playgroud)
目前,我android:minSdkVersion需要设置为15而不是10(Android 2.3).如果没有,android:largeHeap则在AndroidManifest.xml中不允许.
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="15" />
Run Code Online (Sandbox Code Playgroud)
在单个APK中,我可以设置多少
android:largeHeap如果我在Android 4+中使用选项android:largeHeap如果我在Android 2.3中,请不要使用选项根据http://developer.android.com/guide/components/loaders.html,有关加载器的一个好处是,它能够在配置更改期间保留其数据.
在配置更改后重新创建时,它们会自动重新连接到最后一个加载器的光标.因此,他们不需要重新查询他们的数据.
但是,它在所有情况下都不能很好地工作.
我采取以下简单的例子.它是一个FragmentActivity,主持一个Fragment.它Fragment本身拥有AsyncTaskLoader.
以下3种情况非常有效.
创建了1个加载程序,并loadInBackground执行一次.
没有创建新的加载器,loadInBackground也没有被触发.
没有创建新的加载器,loadInBackground也没有被触发.
但是,在以下场景中.
那时,旧的装载机onReset被称为.旧装载机将被销毁.将创建新的加载器loadInBackground并再次触发新的加载器 .
我期待的正确行为是,不会创建新的加载器.
加载器相关代码如下.我在Android 4.1模拟器下运行代码.
package com.example.bug;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class MainFragment extends Fragment implements LoaderManager.LoaderCallbacks<Integer> {
private static class IntegerArrayLoader extends AsyncTaskLoader<Integer> …Run Code Online (Sandbox Code Playgroud) 我通过http://proguard.sourceforge.net/index.html#manual/usage.html阅读,但无法得到他们的分歧.
我测试了2个不同的选项并反编译结果.两者似乎都产生了相同的结果.
-keep class * implements android.os.Parcelable {
*;
}
Run Code Online (Sandbox Code Playgroud)
-keepclassmembers class * implements android.os.Parcelable {
*;
}
Run Code Online (Sandbox Code Playgroud) 鉴于以下枚举:
enum Repeat {
Daily,
Weekly,
Yearly
}
Run Code Online (Sandbox Code Playgroud)
我意识到我们能够这样写它:
Repeat repeat = Repeat.Daily.Weekly.Yearly.Weekly;
Run Code Online (Sandbox Code Playgroud)
这相当于:
Repeat repeat = Repeat.Weekly;
Run Code Online (Sandbox Code Playgroud)
我可以知道为什么允许这样的语法吗?有没有办法让编译器警告我们不要这样做?
通常有以下Application课程
public class WeNoteApplication extends MultiDexApplication {
public static WeNoteApplication instance() {
return me;
}
@Override
public void onCreate() {
super.onCreate();
me = this;
Run Code Online (Sandbox Code Playgroud)
在正常情况下,Application的onCreate将永远是入口点之前称为Activity小号的onCreate“。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Normally, it will NOT be null.
android.util.Log.i("CHEOK", "WeNoteApplication -> " + WeNoteApplication.instance());
Run Code Online (Sandbox Code Playgroud)
但是,如果在启动应用程序时运行以下命令
c:\yocto>adb shell bmgr restore com.yocto.wenote
restoreStarting: 1 packages
onUpdate: 0 = com.yocto.wenote
restoreFinished: 0
done
Run Code Online (Sandbox Code Playgroud)
该应用程序将关闭。如果是,我点击应用程序图标以再次启动。这是怎么回事
Application的onCreate未执行! …class A;
class B {
public:
B(A& a) : a(a) {}
private:
A& a;
};
/* Method 1 */
/* warning C4355: 'this' : used in base member initializer list */
/*
class A {
public:
A() : b(*this) {}
private:
B b;
};
*/
/* Method 2 */
/* But I need to manually perform memory dellocation. */
class A {
public:
A() { b = new B(*this); }
~A() { delete b; }
private:
B* b;
};
int …Run Code Online (Sandbox Code Playgroud) 我想知道,是不是很好的做法,return从try块?
package debug;
/**
*
* @author Owner
*/
public class Main {
public static void main(String[] args) {
System.out.println(fun());
}
static boolean cleanup() {
// Fail to cleanup.
return false;
}
static boolean fun() {
boolean everything_is_fine = true;
try {
System.out.println("open file stream");
return everything_is_fine;
} finally {
everything_is_fine = cleanup();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我首先想到false会打印出来.但是,这是输出:
open file stream
true
Run Code Online (Sandbox Code Playgroud)
如您所见,如果我return在try块内有语句,我将在finally清理期间错过失败状态.
我要把代码作为:
static boolean fun() {
boolean …Run Code Online (Sandbox Code Playgroud) 目前,我们面临来自Android Vital报告的" 网络使用率过高(背景) ".过去30天是0.04%,但我们只有9%好
因为只有超过9%看起来像一个可怕的事情.我们决定认真研究这个问题.
该应用程序是一个笔记应用程序(https://play.google.com/store/apps/details?id=com.yocto.wenote),它提供一个可选的特征-同步应用程序结束后,以背景云英寸
这就是我们在后台执行同步到云的方式.
WorkManager.onPause,计划OneTimeWorkRequest,有约束NetworkType.CONNECTED.工人计划以8秒的延迟开始.BackoffPolicy.LINEAR,延迟时间为1.5小时.我们唯一的信息是https://developer.android.com/topic/performance/vitals/bg-network-usage.
当应用程序在后台连接到移动网络时,应用程序会唤醒CPU并打开收音机.反复这样做可能会耗尽设备的电池电量.如果应用程序处于PROCESS_STATE_BACKGROUND或PROCESS_STATE_CACHED状态,则认为该应用程序在后台运行.......当Android应用程序在0.10%的电池会话中在后台运行时,每小时发送和接收总计50 MB的总量时,Android vitals认为后台网络使用率过高.
Application的onPause.在此期间,应用程序内部或外部PROCESS_STATE_BACKGROUND/ PROCESS_STATE_CACHED?我们怎样才能避免运行中PROCESS_STATE_BACKGROUND/ PROCESS_STATE_CACHED?我的问题是
最近,只有我注意到,有可能substring返回带有无效 unicode 字符的字符串。
例如
public class Main {
public static void main(String[] args) {
String text = "_Salade verte";
/* We should avoid using endIndex = 1, as it will cause an invalid character in the returned substring. */
// 1 : ?
System.out.println("1 : " + text.substring(0, 1));
// 2 :
System.out.println("2 : " + text.substring(0, 2));
// 3 : _
System.out.println("3 : " + text.substring(0, 3));
// 4 : _S
System.out.println("4 : " + text.substring(0, 4)); …Run Code Online (Sandbox Code Playgroud)