小编Che*_*eng的帖子

减少数据存储区读取操作

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

在此输入图像描述

罪魁祸首是,我在"数据存储区读取操作"中获得了大幅增加,仅在几个小时内,尽管我的DownloadServlet调用次数少于50次

DownloadServlet将从数据库中读取blob(通常小于1 MB),并将其返回给用户.我可以做些什么来优化我的代码,这样我就不会那么快达到免费配额限制.

google-app-engine

7
推荐指数
1
解决办法
3464
查看次数

为什么将对象列表从一个活动传递到另一个活动是如此麻烦

我想知道,为什么谷歌很难将对象列表从1个活动传递到另一个活动,即使我的活动都在一个进程中?

他们为什么不能拥有类似的东西

intent.putExtra("histories", listOfHistoryObjects);
Run Code Online (Sandbox Code Playgroud)

它们是否过于设计?

android

7
推荐指数
1
解决办法
476
查看次数

如何平滑路径图的WPF线段

以下是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)

我得到以下效果.

在此输入图像描述

请注意,我避免使用PolyQuadraticBezierSegmentPolyBezierSegment.它往往变得不稳定.这意味着,每当我向线图添加新的传入点时,新添加的点将倾向于更改已在屏幕上绘制的旧路径.作为最终效果,您可以观察整个线图是否在颤抖

我可以在WPF中知道如何消除线段吗?虽然我已经习惯了lineSegment.IsSmoothJoin = true;,但我仍然可以看到尖角.我可以拥有与Android的CornerPathEffect相同的东西吗?

c# wpf android

7
推荐指数
1
解决办法
2453
查看次数

是getSimCountryIso返回3个字母或2个字母的ISO代码

我想知道,是getSimCountryIso返回2个字母还是3个字母的ISO代码?因为文档中没有提到这一点.我用我的Nexus手机测试,它返回2个字母.但是,我不确定其他手机是否属实.

android

7
推荐指数
1
解决办法
2215
查看次数

向行添加按钮后,ListView行无法单击

目前,我有一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单击事件.

我可以知道为什么会这样吗?有什么方法可以解决这个问题吗?

android android-listview

7
推荐指数
1
解决办法
2248
查看次数

清除JavaFX WebView中的会话/缓存/ cookie

我有一个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)

java swing javafx webview oauth-2.0

7
推荐指数
2
解决办法
1万
查看次数

什么是Firebase的等效HitBuilders.ScreenViewBuilder

以前,为了跟踪Google Analytics(分析)中的屏幕视图,我使用以下代码段。这是非常方便的,因为我需要不通过ActivityContext周围。要使用它,我只需要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

android google-analytics firebase firebase-analytics

7
推荐指数
0
解决办法
427
查看次数

在Foreground服务中运行网络代码后,仍然收到“网络使用率过高(背景)”警告

通过引用正确的方式来解决和解决“网络使用过多(背景)”

经过几个月的调试,我们现在可以在Foreground服务中运行所有与网络相关的代码。

但是,我们仍然在Android Vital中收到“网络使用率过高(背景)”警告。

在此处输入图片说明

执行前台服务代码时,通知UI始终会显示在状态栏区域中。

在此处输入图片说明

当我们“退出”我们的应用程序时,我们使用来启动前台服务WorkManagerWorkManager启动前台服务后,会立即返回。

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)

android

7
推荐指数
1
解决办法
349
查看次数

如何让 R8 + proguard-android-optimize.txt + Google Drive API 无缝运行?

这是我们的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)

android proguard google-drive-api android-r8

7
推荐指数
1
解决办法
926
查看次数

“您的应用程序包含不安全的加密模式” - 如何消除此警告?

几天前,在 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但能够确定那是什么类。

知道如何摆脱谷歌安全警告吗?

android android-security

7
推荐指数
1
解决办法
5238
查看次数