小编Håv*_*hus的帖子

以编程方式安装/卸载APK(PackageManager vs Intents)

我的应用程序安装其他应用程序,它需要跟踪它已安装的应用程序.当然,这可以通过简单地保留已安装的应用程序列表来实现.但这不应该是必要的!PackageManager应该负责维护installedBy(a,b)关系.事实上,根据API,它是:

public abstract String getInstallerPackageName(String packageName) - 检索安装包的应用程序的包名称.这确定了包裹来自哪个市场.

目前的做法

使用Intent安装APK

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

使用Intent卸载APK:

Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package",
getPackageManager().getPackageArchiveInfo(apkUri.getPath(), 0).packageName,null));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这显然不是Android Market安装/卸载软件包的方式.他们使用更丰富的PackageManager版本.通过从Android Git存储库下载Android源代码可以看到这一点.以下是与Intent方法相对应的两种隐藏方法.不幸的是,外部开发人员无法使用它们.但也许他们将来会是这样?

更好的方法

使用PackageManager安装APK

/**
 * @hide
 * 
 * Install a package. Since this may take a little while, the result will
 * be posted back to the given observer.  An installation will fail if the calling context
 * lacks the {@link android.Manifest.permission#INSTALL_PACKAGES} permission, if the
 * package named in …
Run Code Online (Sandbox Code Playgroud)

android install uninstall android-intent apk

137
推荐指数
4
解决办法
13万
查看次数

如何在Eclipse中附加Android支持库源代码?

将源代码附加到外部库是非常棒的.在哪里可以找到v4 支持包的源代码?优选地,它将是一个zip文件,可以很容易地附加到android-support-v4.jarEclipse中.

eclipse zip android android-support-library

79
推荐指数
4
解决办法
7万
查看次数

为什么要使用Fragment #setRetainInstance(boolean)?

我发现Fragment #setRetainInstance(true)令人困惑.这是从Android Developer API中提取的Javadoc :

public void setRetainInstance(boolean retain)

控制是否在活动重新创建(例如从配置更改)中保留片段实例.这只能用于不在后栈中的片段.如果设置,则在重新创建活动时,片段生命周期会略有不同:

  • onDestroy()不会被调用(但是onDetach()仍然会被调用,因为片段正在与其当前活动分离.
  • 因为片段没有被重新创建,所以不会调用onCreate(Bundle).
  • onAttach(活动)和onActivityCreated(捆绑)仍然被调用.

问题:作为开发人员,您如何使用它,为什么它会使事情变得更容易?

android android-lifecycle android-fragments

64
推荐指数
4
解决办法
5万
查看次数

是否有可能在Java中重载运算符?

我有以下类,它描述XY表面上的一个点:

class Point{
    double x;
    double y;

    public Point(int x, int y){
        this.x = x;
        this.y = y;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我想overlad +-运营商有可能写代码运行:

Point p1 = new Point(1, 2);
Point p2 = new Point(3, 4);
Point resAdd = p1 + p2; // answer (4, 6)
Point resSub = p1 - p2; // answer (-2, -2)
Run Code Online (Sandbox Code Playgroud)

我怎么能用Java做呢?或者我应该使用这样的方法:

public Point Add(Point p1, Point p2){
    return new Point(p1.x + p2.x, p1.y + p2.y);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java operator-overloading

17
推荐指数
3
解决办法
3万
查看次数

确定这两个类是否可线性分离(在2D中算法)

有两个类,我们称之为X和O.属于这些类的许多元素在xy平面中展开.下面是两个类不可线性分离的示例.无法绘制直线,在线的每一侧完美地划分X和Os.

两个类的成员分布在xy平面上

一般来说,如何确定两个类是否可线性分离?.我对一种算法感兴趣,该算法不对元素的数量或它们的分布做出假设.当然优选最低计算复杂度的算法.

algorithm math classification machine-learning

16
推荐指数
3
解决办法
8325
查看次数

与android:drawableBottom属性结合使用时不显示的可绘制形状.

保存在res/drawable/gradient_box.xml的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

(上面的形状定义取自当时的Android开发者指南.它没有错误.).

让我们尝试将它与TextView一起使用:

<TextView 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Text with some crazy rectangle shape below it."
    android:drawableBottom="@drawable/gradient_box"/>   
Run Code Online (Sandbox Code Playgroud)

TextView显示就好像drawableBottom属性不在那里!但是,将形状设置为背景可以正常工作:

<TextView 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Text with crazy background"
    android:background="@drawable/gradient_box"/>
Run Code Online (Sandbox Code Playgroud)

将实际图像(例如a*.png)设置为android:drawableBottom也可以正常工作.

有任何想法吗?

layout android shape drawable

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

使用带有Spring Annotations的ehcache 3(不使用Spring Boot)

我试图让Ehcache 3在不使用Spring引导的情况下使用Spring 4.

这是一个使用Spring Boot的工作示例,但我正在处理一个不使用Spring Boot的现有应用程序.

问题是spring-context-support(添加Spring的缓存注释)要求Ehcache的CacheManager在这个类路径上:net.sf.ehcache.CacheManager

但是,在Ehcache 3中,CacheManager类驻留在另一个类路径上:org.ehcache.CacheManager.

所以,基本上spring-context-support不支持Ehcache 3.你必须直接使用JSR-107注释,而不是Spring提供的注释.

但显然它适用于Spring Boot.也许有一种方法可以使它与标准的Spring应用程序一起工作.这就是我所希望的.我真的想要使用Spring自己的注释而不是JSR-107注释.

spring ehcache spring-boot spring-4 jsr107

13
推荐指数
1
解决办法
8046
查看次数

滑动ViewPager时片段不会调用onSaveInstanceState?

我遇到了ViewPager的问题,我的ListView正在丢失它的滚动位置.

可以使用以下命令轻松存储和恢复ListView的状态:

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 
{
    View v = inflater.inflate(R.layout.frag_cool_things, container, false);

    AdvListView listView = (AdvListView) v.findViewById(R.id.lv0);
    listView.setOnItemClickListener( mOnListItemClicked );

    if (null != savedInstanceState)
    {
        listView.onRestoreListViewInstanceState(savedInstanceState.getParcelable("list_state"));
    }

    mListView = listView;

    return v;
}

@Override
public void onSaveInstanceState (Bundle outState) 
{
    super.onSaveInstanceState(outState);

    outState.putParcelable("list_state", mListView.onSaveListViewInstanceState());
}
Run Code Online (Sandbox Code Playgroud)

然而问题是,当正在刷片段时会被onDestroyView()调用但从不调用onSaveInstanceState (Bundle outState).

旋转屏幕,这样恢复ListView状态就好了,但刷卡我无法弄清楚如何正确恢复列表.

android android-widget android-lifecycle android-viewpager

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

更改WAMP中的根目录

我想更改根目录以将目录指向以下位置:

C:\ Documents and Settings\User\My Documents [documents]\wamp

我知道我必须在以下行中更改apache http.conf文件

DocumentRoot"c:/ Documents and Settings/User/My Documents/[documents] /"

但是,似乎[文档]旁边的方括号导致显示禁止错误:

被禁止

您无权访问此服务器上的/ login /.

有没有办法在目录树中使用方括号?[文件]以特定目的命名,它需要保持这种状态.否则,我需要做很多重新编码.

指向目录树时有什么规则?

提前致谢.

wampserver

6
推荐指数
1
解决办法
3万
查看次数

在升级到macOS Sierra之后,Spring Data + MongoDB以某种方式极其缓慢

升级到macOS Sierra后,Spring Data和MongoDB之间的通信速度非常慢,基本上无法使用.

具体地说,与数据库的交互集合以前需要大约100毫秒,现在需要大约10分钟.

我正在使用最新的稳定版本的驱动程序和弹簧数据:

MongoDB Java驱动程序

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Spring Data MongoDB

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.9.3.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

此外,我使用Homebrew安装了MongoDB.

mongod --version:

db version v3.2.9
git version: 22ec9e93b40c85fc7cae7d56e7d6a02fd811088c
OpenSSL version: OpenSSL 1.0.2h  3 May 2016
allocator: system
modules: none
build environment:
    distarch: x86_64
    target_arch: x86_64
Run Code Online (Sandbox Code Playgroud)

我不确定如何解决这个问题.如果您认为我应该将其发布在其他地方,请告诉我,我会的.

谢谢.

更新1:在尝试在docker容器中运行mongodb而不是在macOS Sierra上运行它之后,仍然存在缓慢的问题.

更新2:结束降级至El Capitan.

java spring mongodb spring-data macos-sierra

6
推荐指数
1
解决办法
836
查看次数