根据Google App Engine的新定价方案,我得到了一个惊喜定价表,如下所示.

罪魁祸首是,我在"数据存储区读取操作"中获得了大幅增加,仅在几个小时内,尽管我的DownloadServlet调用次数少于50次
DownloadServlet将从数据库中读取blob(通常小于1 MB),并将其返回给用户.我可以做些什么来优化我的代码,这样我就不会那么快达到免费配额限制.
我想知道,为什么谷歌很难将对象列表从1个活动传递到另一个活动,即使我的活动都在一个进程中?
他们为什么不能拥有类似的东西
intent.putExtra("histories", listOfHistoryObjects);
Run Code Online (Sandbox Code Playgroud)
它们是否过于设计?
以下是Android代码.
path.moveTo(xx, yy);
for (...) {
path.lineTo(xx, yy);
}
canvas.drawPath(this.path, paint);
Run Code Online (Sandbox Code Playgroud)

为了消除尖角,我正在使用
final CornerPathEffect cornerPathEffect = new CornerPathEffect(50);
paint.setPathEffect(cornerPathEffect);
Run Code Online (Sandbox Code Playgroud)

来到WPF时,我使用以下代码.
PathFigure pathFigure = new PathFigure();
pathFigure.StartPoint = new Point(xx, yy);
for (...) {
LineSegment lineSegment = new LineSegment(new Point(xx, yy), true);
lineSegment.IsSmoothJoin = true;
pathFigure.Segments.Add(lineSegment);
}
PathGeometry pathGeometry = new PathGeometry(new PathFigure[] { pathFigure });
drawingContext.DrawGeometry(null, new Pen(Brushes.White, 3), pathGeometry);
Run Code Online (Sandbox Code Playgroud)
我得到以下效果.

请注意,我避免使用PolyQuadraticBezierSegment或PolyBezierSegment.它往往变得不稳定.这意味着,每当我向线图添加新的传入点时,新添加的点将倾向于更改已在屏幕上绘制的旧路径.作为最终效果,您可以观察整个线图是否在颤抖
我可以在WPF中知道如何消除线段吗?虽然我已经习惯了lineSegment.IsSmoothJoin = true;,但我仍然可以看到尖角.我可以拥有与Android的CornerPathEffect相同的东西吗?
我想知道,是getSimCountryIso返回2个字母还是3个字母的ISO代码?因为文档中没有提到这一点.我用我的Nexus手机测试,它返回2个字母.但是,我不确定其他手机是否属实.
目前,我有一ListView排.单击行上的任何区域将产生ListView单击事件.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
this.getListView().setMultiChoiceModeListener(new ModeCallback());
this.getListView().setOnItemClickListener(new ListViewOnItemClickListener());
} else {
// http://stackoverflow.com/questions/9754170/listview-selection-remains-persistent-after-exiting-choice-mode
this.getListView().setOnItemLongClickListener(new ListViewOnItemLongClickListener());
this.getListView().setOnItemClickListener(new ListViewOnItemClickListener());
}
Run Code Online (Sandbox Code Playgroud)
现在,对于每一行,我想添加一个小按钮.单击小按钮将产生按钮单击事件,这与ListView原始单击事件不同.

在我ArrayAdapter,我用
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = activity.getLayoutInflater();
rowView = inflater.inflate(R.layout.watchlist_row_layout, null);
...
}
Button button = (Button)rowView.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Utils.showLongToast("BUTTON CLICK");
}
});
Run Code Online (Sandbox Code Playgroud)

单击该按钮将产生按钮单击事件.但是,单击按钮以外的区域,将不再产生任何ListView单击事件.
我可以知道为什么会这样吗?有什么方法可以解决这个问题吗?
我有一个Swing对话框,它使用JavaFX WebView显示来自Google服务器的oAuth 2.0 URL.
public class SimpleSwingBrowser extends JDialog {
private final JFXPanel jfxPanel = new JFXPanel();
private WebEngine engine;
private final JPanel panel = new JPanel(new BorderLayout());
public SimpleSwingBrowser() {
super(MainFrame.getInstance(), JDialog.ModalityType.APPLICATION_MODAL);
initComponents();
}
private void initComponents() {
createScene();
panel.add(jfxPanel, BorderLayout.CENTER);
getContentPane().add(panel);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-460)/2, (screenSize.height-680)/2, 460, 680);
}
private void createScene() {
Platform.runLater(new Runnable() {
@Override
public void run() {
final WebView view = new WebView();
engine = view.getEngine();
engine.titleProperty().addListener(new ChangeListener<String>() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 以前,为了跟踪Google Analytics(分析)中的屏幕视图,我使用以下代码段。这是非常方便的,因为我需要不通过Activity和Context周围。要使用它,我只需要Utils.trackGAView("ShareDialogFragment");在代码中的任何位置调用即可。
public static Tracker getTracker() {
if (false == isGooglePlayServicesAvailable()) {
return null;
}
if (tracker == null) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(JStockApplication.instance());
tracker = analytics.newTracker(R.xml.app_tracker);
}
return tracker;
}
public static void trackGAView(String view) {
Tracker tracker = Utils.getTracker();
if (tracker == null) {
return;
}
tracker.setScreenName(view);
tracker.send(new HitBuilders.ScreenViewBuilder().build());
}
Run Code Online (Sandbox Code Playgroud)
然而,在火力地堡,它是不是真的那么方便易,因为它需要一个Activity- https://firebase.google.com/docs/analytics/screenviews
并不是代码中的每个地方都可以访问该Activity对象。
mFirebaseAnalytics.setCurrentScreen(activity, screenName, null /* class override */);
Run Code Online (Sandbox Code Playgroud)
是否有什么好的技术可以在Firebase中跟踪屏幕视图而无需四处走动Activity?
经过几个月的调试,我们现在可以在Foreground服务中运行所有与网络相关的代码。
但是,我们仍然在Android Vital中收到“网络使用率过高(背景)”警告。
执行前台服务代码时,通知UI始终会显示在状态栏区域中。
当我们“退出”我们的应用程序时,我们使用来启动前台服务WorkManager。WorkManager启动前台服务后,会立即返回。
public class SyncWorker extends Worker {
@NonNull
@Override
public Result doWork() {
final Intent intent = new Intent(WeNoteApplication.instance(), SyncForegroundIntentService.class);
ContextCompat.startForegroundService(
WeNoteApplication.instance(),
intent
);
return Result.success();
}
}
public class SyncForegroundIntentService extends IntentService {
private static final String TAG = "com.yocto.wenote.sync.SyncIntentService";
public SyncForegroundIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
final Context context = WeNoteApplication.instance();
NotificationCompat.Builder builder = new NotificationCompat.Builder(...
startForeground(SYNC_FOREGROUND_INTENT_SERVICE_ID, builder.build());
// Perform networking operation within …Run Code Online (Sandbox Code Playgroud) 这是我们的R8版本
当前版本是:1.4.94(从 go/r8bot 构建 390954928f0db9c3b888a367f7f128ce3bbfb160 (luci-r8-ci-archive-0-5g74))。
当我从
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
到
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
我们收到以下错误。
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code": 403,
"errors": [
{
"domain": "usageLimits",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"reason": "dailyLimitExceededUnreg",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:378)
at com.google.api.client.http.HttpRequest.a(HttpRequest.java:1067)
at …Run Code Online (Sandbox Code Playgroud) 几天前,在 Google Play Console 的“APK 预发布报告”中,它开始标记我
Unsafe encryption
Detected in APK ???
Your app contains unsafe cryptographic encryption patterns. Please see this Google Help Centre article for details.
Vulnerable classes:
c.j.a.s.J.b
Run Code Online (Sandbox Code Playgroud)
但是,从 APK 早期开始,我没有更改任何加密代码/描述代码。因此,我不确定为什么 Google 开始在最近的 APK 上警告我?
知道如何解决吗?因为,易受攻击的类的信息c.j.a.s.J.b没有帮助。
我尝试使用 Proguard + mapping.txt 进行回溯,c.j.a.s.J.b但能够确定那是什么类。
知道如何摆脱谷歌安全警告吗?