小编Che*_*eng的帖子

Mercurial - 使用命名分支克隆或分支

目前,我正在使用CVS来跟踪我的SourceForge项目.我有以下要求.

  • 我需要保持稳定的Trunk.每当用户报告严重错误时,我可以立即修复,并在几天内发布.
  • 我需要执行广泛的新功能增强,大量的代码重构开启和关闭.这可能需要几周到几个月的时间.因此,我通常会做的是,我将在分支内执行新功能增强和大量代码重构(如果有更多功能,则执行更多分支).经过足够的测试,我会将它们合并回稳定的Trunk.

大部分时间我都是一个糟糕的互联网连接.最近,我计划迁移到分布式源代码控制 - Mercurial,以便我有时可以脱机工作.

我读了下面的文章.我相信我可以使用以下方法来保留我之前在CVS分支下的工作流程.

但是,我看不出最终用户的观点有什么不同.我可以知道你们通常适用哪种神话吗?为什么?

mercurial

9
推荐指数
1
解决办法
1096
查看次数

在分支中应用补丁

我收到了贡献者的补丁.显然,他在行李箱里制作补丁.但是,我想将他的更改提交给一个新的分支.我可以通过Tortoise-Hg知道如何做到这一点吗?

mercurial tortoisehg

9
推荐指数
1
解决办法
4031
查看次数

正确的方法来了解活动是否已被销毁

我可以知道知道某项活动是否已被销毁的正确方法是什么?目前,我使用以下方式.

private volatile boolean isOnDestroyCalled = false;

@Override
protected void onDestroy() {
    super.onDestroy();
    isOnDestroyCalled = true;
}

public boolean isOnDestroyCalled() {
    return this.isOnDestroyCalled;
}
Run Code Online (Sandbox Code Playgroud)

有没有比上面更好的方法?

android

9
推荐指数
1
解决办法
6369
查看次数

在DialogFragment中更改ProgressDialog的字体字体

我可以知道是否可以更改ProgressDialog消息显示的字体字体DialogFragment

public class LoadFromCloudTaskFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        this.progressDialog = new ProgressDialog(this.getActivity());
        this.progressDialog.setMessage(progressMessage);
        this.progressDialog.setCanceledOnTouchOutside(false);

        return progressDialog;
    }
Run Code Online (Sandbox Code Playgroud)

通过继承创建自定义类ProgressDialog可能是其中一种方式.但是,我想知道还有更好的选择吗?可悲的是,我们没有ProgressDialog.Builder.

我尝试过的另一种选择是

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    this.progressDialog = new ProgressDialog(this.getActivity());
    this.progressDialog.setMessage(progressMessage);
    this.progressDialog.setCanceledOnTouchOutside(false);

    Utils.setCustomFont(this.progressDialog.findViewById(android.R.id.message), Utils.ROBOTO_LIGHT_FONT);

    return progressDialog;
}
Run Code Online (Sandbox Code Playgroud)

但这会给我错误

android.util.AndroidRuntimeException:在添加内容之前必须调用requestFeature()

android

9
推荐指数
1
解决办法
6019
查看次数

当滑动到不同的viewpager页面时,如何使用layout_scrollFlags再次显示先前隐藏的工具栏

目前,我有以下页面 ViewPager

在此输入图像描述

滚动INFO选项卡中的页面时,将隐藏工具栏.这种行为是通过实施CoordinatorLayout,AppBarLayoutapp:layout_scrollFlags

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp"
        android:elevation="0dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >

        <android.support.v7.widget.Toolbar
            app:layout_scrollFlags="scroll|enterAlways|snap"

            android:id="@+id/toolbar"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:minHeight="?attr/actionBarSize"
            android:background="@android:color/transparent"
            app:elevation="0dp"
            android:elevation="0dp"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tab_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabIndicatorColor="?attr/detailedStockTabIndicatorColor" />
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

所以,这就是滚动后的样子.

滚动后,隐藏工具栏

在此输入图像描述

由于这是一个ViewPager,如果我滑动到FINANCIAL选项卡,它将如下所示.

随后刷卡

在此输入图像描述

由于,FINANCIAL选项卡中的页面不可滚动,我们希望不要隐藏Toolbar.

我想知道,layout_scrollFlags当刷到不同的ViewPager页面时,如何使工具栏再次显示以前隐藏使用?

android

9
推荐指数
1
解决办法
341
查看次数

确定是否在JPanel中找到组件的快速方法

我可以知道如何确定是否在JPanel中找到了某个组件?

boolean isThisComponentFoundInJPanel(Component c)
{
    Component[] components = jPanel.getComponents();
    for (Component component : components) {
        if (c== component) {
                return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

使用循环效率不高.有没有更好的方法?

java swing

8
推荐指数
3
解决办法
9790
查看次数

Google Play服务的AdMob会执行不受欢迎的自动滚动操作

我正在使用Google Play服务版本13中的AdMob.我意识到,当我将广告放入其中时ScrollView,AdMob会在从服务器成功获取广告后尝试执行不需要的自动滚动.

package com.example.admob_bug;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Create the adView.
        adView = new AdView(this);
        adView.setAdUnitId("a151b03485063e0");
        adView.setAdSize(AdSize.BANNER);

        // Lookup your LinearLayout assuming it's been given
        // the attribute android:id="@+id/mainLayout".
        LinearLayout layout = (LinearLayout)findViewById(R.id.advertisement);

        // Add the adView to it.
        layout.addView(adView);

        // Initiate a generic request.
        AdRequest adRequest = new AdRequest.Builder().build();

        // Load the …
Run Code Online (Sandbox Code Playgroud)

android admob google-play-services

8
推荐指数
1
解决办法
2042
查看次数

在app启动期间更改主题的最快方法

目前,我在我的应用程序中提供了2个主题,基于用户的最后选择 - 黑暗主题和浅色主题.

在主要活动启动期间,我将执行以下操作.

public class MyFragmentActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // getUserLastThemeChoice will either return R.style.Theme_My_Light or 
        // R.style.Theme_My_Dark.
        this.setTheme(getUserLastThemeChoice());

        super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)

在我AndroidManifest.xml,我有以下

<application
    ...
    android:theme="@style/Theme.My.Dark" >
Run Code Online (Sandbox Code Playgroud)

由于硬编码值AndroidManifest.xml,如果用户先前的选择是轻主题,我将观察以下内容.

  1. 应用程序以黑暗主题启动,由于 AndroidManifest.xml
  2. 一会儿...
  3. 由于this.setTheme主要应用程序将更改为白色主题Activity

在那里我可以避免这种过渡观察吗?就是这样,根据他们的最后选择直接呈现给用户.

p/s注意,如果从清单中删除主题信息,它将没有多大帮助.由于系统默认使用holo dark.您仍然会观察到过渡,特别是在慢速设备中.

android

8
推荐指数
1
解决办法
741
查看次数

为什么材料设计的应用程序比传统的holo设计应用程序慢

我的传统holo应用程序曾经非常快速地启动.

最近,我花了1年兼职,将holo app移植到材料设计的应用程序.这是我所做的一些重大改变.

  1. 从API 21到API 23
  2. ActionBarSherlockAppCompat工具栏支持库
  3. 从支持库v4:22.1.1到v4:23.2.1
  4. 最终编译的APK大小从4~5 MB变为5~6 MB.

我现在面临的一个问题是我的材料设计应用程序启动速度慢.它比我的全息设计应用程序显着更慢(超过2秒).

快速启动全息应用程序的速度

https://youtu.be/NguClpd6rG0

材料设计app的启动速度慢

https://youtu.be/TdnlZey0ABM

注意,在启动应用程序之前,我已经确保我提前终止了进程(通过设置 - >应用程序 - >强制停止).

正如您从视频中看到的那样,一旦我点击图标,ActionBar立即显示全息应用程序.对于材料设计的应用程序,您需要等待大约2至3秒,只有Toolbar将显示.

起初,我想用来TraceView调试和导致缓慢的原因.但是,我意识到TraceView只能在已经启动的应用程序上使用.

我已经证实我没有在我的执行任何耗时的任务Application,ActivityFragment.由于我的全息应用程序和材料设计的应用程序共享相同的逻辑代码,我无法弄清楚我的材料设计应用程序的速度较慢的原因.

有没有人面临同样的问题?我想知道,有没有什么好方法可以找到根本原因?

performance android

8
推荐指数
1
解决办法
362
查看次数

如何在不引发 org.threeten.bp.zone.ZoneRulesException 的情况下对使用 ZoneId.systemDefault 的代码进行单元测试

我有以下应用程序代码。

应用代码

public static long advanceByMax1HourWithoutOverflow(long currentTimeMillis) {
    ZoneId zoneId = ZoneId.systemDefault();

    ZonedDateTime zonedDateTime = Instant.ofEpochMilli(currentTimeMillis).atZone(zoneId);

    // 0-23
    int hour = zonedDateTime.getHour();

    if (hour < 23) {
        zonedDateTime = zonedDateTime.plusHours(1);
        return zonedDateTime.toInstant().toEpochMilli();
    }

    // 0-59
    int minute = zonedDateTime.getMinute();

    if (minute < 59) {
        zonedDateTime = zonedDateTime.plusMinutes(1);
        return zonedDateTime.toInstant().toEpochMilli();
    }

    return currentTimeMillis;
}
Run Code Online (Sandbox Code Playgroud)

我用以下内容为它编写了一个单元测试。

单元测试代码

@Test
public void advanceByMax1HourWithoutOverflow() {
    /*
    27 October 2018
    1540648800000 -> 1540652400000
    22:00 -> 23:00
    */
    long currentTimeMillis = 1540648800000L;
    long expected = 1540652400000L;
    long …
Run Code Online (Sandbox Code Playgroud)

java android unit-testing threetenbp

8
推荐指数
1
解决办法
1825
查看次数