小编Gra*_*and的帖子

代理的目的提供Dagger 2生成的代码

我有这个Dagger模块.我想了解生成的代码,以便验证我的Dagger配置是否最佳.

@Module
public class TypefaceModule {

    @Provides @Singleton @Named("Roboto Light")
    static Typeface provideRobotoLight(AssetManager assets) {
        return Typeface.createFromAsset(assets, "fonts/Roboto-Light.ttf");
    }

}
Run Code Online (Sandbox Code Playgroud)

这是生成的代码(Dagger 2.14.1):

public final class TypefaceModule_ProvideRobotoLightFactory implements Factory<Typeface> {
  private final Provider<AssetManager> assetsProvider;

  public TypefaceModule_ProvideRobotoLightFactory(Provider<AssetManager> assetsProvider) {
    this.assetsProvider = assetsProvider;
  }

  @Override
  public Typeface get() {
    return Preconditions.checkNotNull(
        TypefaceModule.provideRobotoLight(assetsProvider.get()),
        "Cannot return null from a non-@Nullable @Provides method");
  }

  public static TypefaceModule_ProvideRobotoLightFactory create(
      Provider<AssetManager> assetsProvider) {
    return new TypefaceModule_ProvideRobotoLightFactory(assetsProvider);
  }

  public static Typeface proxyProvideRobotoLight(AssetManager assets) {
    return Preconditions.checkNotNull(
        TypefaceModule.provideRobotoLight(assets),
        "Cannot return …
Run Code Online (Sandbox Code Playgroud)

java android generated-code dagger-2

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

使用SQLiteDatabase从多个表中查询SQLite

我的数据库中有2个表,例如:Table1: id (PK), data1Table2: id (PK), id_table1 (FK), data2.我该如何进行这样的查询:

SELECT * FROM Table1, Table2 WHERE Table1.id = Table2.id_table1 
GROUP BY Table1.data1
Run Code Online (Sandbox Code Playgroud)

我正在使用SQLiteDatabase它的query()方法.

Cursor mCursor = db.query(true, new String[] {"Table1","Table2"}, 
new String[] {"Table1.id","data1", "Table2.id", "id_table1", "data2"},
"Table1.id=Table2.id_table1", null, "Table1.data1", null,null,null);
Run Code Online (Sandbox Code Playgroud)

但是第二个arg存在问题 - 它只能使用String,而不是String [](如new String[] {"Table1","Table2}).如何以这种方式从多个表中进行查询?

sqlite android

12
推荐指数
2
解决办法
5万
查看次数

具有随机长度的数组的sizeof()

你能解释一下sizeof()随机长度数组的工作原理吗?我认为sizeof()在编译期间计算数组,但是,具有随机长度的数组的大小似乎是正确计算的.

例:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(){
    srand ( (unsigned)time ( NULL ) );
    int r = rand()%10;
    int arr[r]; //array with random length
    printf("r = %d size = %d\n",r, sizeof(arr)); //print the random number, array size
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

多次运行的输出:

r = 8 size = 32
r = 6 size = 24
r = 1 size = 4
Run Code Online (Sandbox Code Playgroud)

编译器:gcc 4.4.3

c random gcc sizeof

11
推荐指数
1
解决办法
1114
查看次数

添加两个数字

我正在尝试使用GCC的内联汇编程序熟悉x86程序集.我正在尝试添加两个数字(ab)并存储结果c.我有四个略有不同的尝试,其中三个有效; 最后一个不会产生预期的结果.

前两个示例使用中间寄存器,这些都可以正常工作.第三个和第四个示例尝试直接添加两个值而不使用中间寄存器,但结果会根据优化级别和添加输入值的顺序而有所不同.我错了什么?

环境是:

i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
Run Code Online (Sandbox Code Playgroud)

首先,变量声明如下:

int a = 4;
int b = 7;
int c;
Run Code Online (Sandbox Code Playgroud)

例1:

asm("   movl    %1,%%eax;"
    "   addl    %2,%%eax;"
    "   movl    %%eax,%0;"
    : "=r" (c)
    : "r" (a), "r" (b)
    : "%eax"
   );
printf("a=%d, b=%d, c=%d\n", a, b, c);
// output: a=4, b=7, c=11
Run Code Online (Sandbox Code Playgroud)

例2:

asm("   movl    %2,%%eax;"
    "   addl    %1,%%eax;"
    "   movl    %%eax,%0;"
    : "=r" (c)
    : "r" (a), "r" (b) …
Run Code Online (Sandbox Code Playgroud)

x86 gcc inline-assembly

11
推荐指数
1
解决办法
2688
查看次数

使用CONFLICT_REPLACE插入时,SQLiteException"无法提交 - 没有事务处于活动状态"

我在更新数据库时遇到了一些麻烦.

这是日志:

12-02 16:18:57.502: D/Data Update(21218): Start updating databases
12-02 16:18:57.502: D/Data Update(21218): update size: 5
12-02 16:18:57.502: D/Data Update(21218): updating table cemeteries
12-02 14:28:51.877: I/SqliteDatabaseCpp(18826): sqlite returned: error code = 1802, msg = statement aborts at 13: [INSERT OR REPLACE  INTO cemeteries(id,name) VALUES (?,?)] , db=/data/data/de.l_one.app.shaufelv14/databases/poidatabase
12-02 14:28:51.877: E/SQLiteStatementCpp(18826): native_execute (step): errno = 2, error message = No such file or directory, handle = 0xdc0b70
12-02 14:28:51.877: I/SqliteDatabaseCpp(18826): sqlite returned: error code = 1, msg = statement aborts at …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

10
推荐指数
1
解决办法
7134
查看次数

我可以从我的应用程序中触发Android的内置错误捕获功能吗?

Android从ICS开始(我认为)为用户提供了捕获系统状态的能力,然后随心所欲地发送或共享捕获的数据.看看Android平板电脑中捕获的bug报告是什么意思?

捕获的数据包括屏幕截图,正在运行的进程列表,Logcat内容,每个进程的活动线程等.

这非常有用,但触发它似乎涉及用户按下有趣的组合键(Power + VolumeUp + VolumeDown)或启用开发人员模式并从那里选择特定选项(获取错误报告,电源菜单错误报告).

有没有办法可以从我自己的代码中触发这个,这样我就可以为用户提供一个简单的菜单选项来捕获错误报告?

debugging android logcat android-debug

10
推荐指数
1
解决办法
3109
查看次数

为什么Mercurial需要与服务器通信,列出传出(非推送)提交?

当我打字时hg outgoing,我收到这样的回复:

comparing with ssh://server:1234/path/to/repo
Run Code Online (Sandbox Code Playgroud)

和通过网络通信时的延迟.

为什么这种网络流量是必要的?Mercurial是否有一些基本的东西,这意味着它无法记住哪些提交被推送,哪些没有?

是否有替代命令可以在不通过网络进行通信的情况下为我提供类似的信息?

mercurial dvcs

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

Android 2.1和2.2之间的SQLite差异

我有一个Android应用程序,到目前为止我所有的测试都在我的Froyo手机上.我刚开始在模拟器中对1.6和2.1进行测试,它在启动时崩溃了.它在我的一个视图中找不到列.

05-17 23:31:31.446: ERROR/AndroidRuntime(198): Caused by: 
android.database.sqlite.SQLiteException: no such column: 
categoryTable.currentBal: , while compiling: 
SELECT SUM(categoryTable.currentBal) FROM catDisplayTable 
WHERE masterCategoryName != "__Hidden__"
Run Code Online (Sandbox Code Playgroud)

视图的架构如下:

CREATE VIEW catDisplayTable AS SELECT categoryTable._id, categoryTable.name,
categoryTable.currentBal, categoryTable.sequence, categoryTable.note,
masterCategoryTable.name AS masterCategoryName FROM categoryTable 
LEFT OUTER JOIN masterCategoryTable 
ON categoryTable.masterCategoryId = masterCategoryTable._id;
Run Code Online (Sandbox Code Playgroud)

通过adb shell连接到各种模拟器实例,我已经确认(1)在所有情况下都有正确的模式,(2)在1.6和2.1中,SQLite无法在此视图中找到列,即使是简单如

SELECT categoryTable.name FROM catDisplayTable;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT name FROM catDisplayTable;
Run Code Online (Sandbox Code Playgroud)

它在2.2上工作正常.

因此,我的假设是在Android 2.1和2.2之间的SQLite中发生了一些变化.这个答案有助于提供每个Android API级别附带的SQLite版本.它说SQLite在2.1和2.2之间从3.5.9更新到3.6.22.看看SQLite发布历史,我没有看到任何特别明显可能解释其差异的内容.

任何人都可以确切地确定改变了什么,并建议我如何解决它,以便我的代码适用于Froyo之前的设备?

sqlite android

8
推荐指数
2
解决办法
1952
查看次数

StrictMode抱怨InputStream未被关闭

我在Android中遇到StrictMode报告的以下违规行为.

02-05 04:07:41.190:ERROR/StrictMode(15093):在附加堆栈跟踪处获取资源但从未释放.有关避免资源泄漏的信息,请参阅java.io.Closeable.02-05 04:07:41.190:ERROR/StrictMode(15093):java.lang.Throwable:未调用显式终止方法'close'

关于不正确关闭流是很困难的.但是,不应该关闭in底层流?标记错误的原因是什么?

    private ArrayList<Uri> loadPath() {
        ArrayList<Uri> uris = new ArrayList<Uri>();
        if (mFile.exists()) {
            ObjectInputStream in = null;
            try {
                in = new ObjectInputStream(new BufferedInputStream(
                         new FileInputStream(mFile), STREAM_BUFFER_SIZE));
                ArrayList<String> strings = new ArrayList<String>();
                strings.addAll((ArrayList<String>) in.readObject());
                for (String string : strings) {
                    uris.add(Uri.parse(string));
                }
            } catch (Exception e) {
                mFile.delete();
            } finally {
                IOUtils.closeQuietly(in);
            }
        }
        return uris;
     }

    public static void closeQuietly(InputStream input) {
        try {
            if (input != null) {
                input.close();
            } …
Run Code Online (Sandbox Code Playgroud)

java android objectinputstream android-strictmode

8
推荐指数
2
解决办法
7341
查看次数

Sqlite DB与Android有一些基本问题

我想在Android中使用SQLite数据库.我有几个问题:

  1. 数据库的最大大小是多少?
  2. 数据的安全性如何?
  3. 数据库存储在哪里?
  4. 这些数据会在手机上保留多长时间?

sqlite android

8
推荐指数
2
解决办法
410
查看次数