小编JP *_*ura的帖子

Content Provider是Repository Pattern的实现吗?

存储库模式Hieatt和Rob Mee定义为设计模式,模式使用类似集合的接口来访问域对象,从而在域和数据映射层之间进行调解.

MSDN存储库模式

基本上,它将一个或多个I/O设备(云,磁盘,数据库等)抽象为一个类似于集合的接口,您可以在其中读取,写入,查找和删除数据.

Fernando Cejas的Android清洁架构中,应用程序所需的所有数据都来自此层,通过存储库实现(接口位于域层中),该实现使用存储库模式,其策略通过工厂选择不同的数据源,具体取决于一定条件下.

内容提供商

然而,正如Douglas Schmidt教授在Coursera课程中所指出的,内容提供商管理和调解对一个或多个应用程序的中央数据库的访问.

内容提供商

Android编程一书中,内容提供程序用作RESTful Web服务的Facade.这种方法最初由 Virgil Dobjanschi在Google I/O 2010期间提出.

因此,为什么不使用它作为存储库模式本身而不是使用内容提供程序来访问本地SQLite数据库

在此输入图像描述

android design-patterns android-mvp

36
推荐指数
4
解决办法
2975
查看次数

Cordova和PhoneGap没有在Ubuntu 14.04上工作

我用npm安装了Cordova和PhoneGap:

sudo npm install -g cordova
sudo npm install -g phonegap
Run Code Online (Sandbox Code Playgroud)

但是,两者都返回相同的错误消息:

/usr/bin/env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud)

ubuntu extjs node.js cordova

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

如何在Python中编写一系列promise?

是否可以使用Python 3.6.1标准库编写一系列承诺(或任务)?

例如,JavaScript中的序列承诺写为:

const SLEEP_INTERVAL_IN_MILLISECONDS = 200;

const alpha = function alpha (number) {
    return new Promise(function (resolve, reject) {
        const fulfill = function() {
            return resolve(number + 1);
        };

        return setTimeout(fulfill, SLEEP_INTERVAL_IN_MILLISECONDS);
    });
};

const bravo = function bravo (number) {
    return new Promise(function (resolve, reject) {
        const fulfill = function() {
            return resolve(Math.ceil(1000*Math.random()) + number);
        };
        return setTimeout(fulfill, SLEEP_INTERVAL_IN_MILLISECONDS);
    });
};

const charlie = function charlie (number) {
    return new Promise(function (resolve, …
Run Code Online (Sandbox Code Playgroud)

javascript python promise python-3.x python-asyncio

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

Android TaskStackBuilder startActivities会在Samsung Galaxy S3上打开白屏并冻结

在某些手机上尝试使用该startActivities()方法尝试启动活动时遇到问题TaskStackBuilder(特别是三星Galaxy S3 - Android 4.3,三星Galaxy S3 Neo - Android 4.4.2)

以下是使用的代码段:

TaskStackBuilder stackBuilder = TaskStackBuilder.create(ConfirmAddressActivity.this);
stackBuilder.addParentStack(AddressesActivity.class);

Intent intent = AddressesActivity.createStartingIntent(
    ConfirmAddressActivity.this,
    true, Collections.EMPTY_LIST
);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

stackBuilder.addNextIntent(intent);
stackBuilder.startActivities();
Run Code Online (Sandbox Code Playgroud)

有缺陷的行为是,在执行stackBuilder.startActivities()它之后打开一个白色屏幕并保持冻结而不打开AddressesActivity.这不是一种常规行为,有时会发生.

正常行为是,执行后stackBuilder.startActivities()打开白屏(0.5秒 - 1秒)然后打开AddressesActivity,同时正确构建该活动的完整后栈.这是许多设备/平台下的正确行为.(HTC M9 Android 6.0,三星S2 - Android 4.1.2,三星Galaxy S6 - Android 5.1.1,LG G4 - Android 5.1.1)

这是定义活动的android清单片段:

<activity
    android:name=".activity.account.AccountActivity"
    android:label="My account"
    android:screenOrientation="portrait"
    android:parentActivityName=".activity.DashboardActivity">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".activity.DashboardActivity" />
</activity>

<activity
    android:name=".activity.addresses.AddressesActivity"
    android:label="My addresses"
    android:screenOrientation="portrait"
    android:parentActivityName=".activity.account.AccountActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".activity.account.AccountActivity" …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-navigation taskstackbuilder

15
推荐指数
0
解决办法
467
查看次数

如何使用Android Room创建一个包含两个或多个外键的表?

在此输入图像描述

根据实体关系模型之间的关系,tbl_post并且tbl_category可以使用指定房间持久性库如下:

@Entity(foreignKeys = @ForeignKey(
    entity = TblPost.class,
    parentColumns = "id",
    childColumns = "tbl_post_id")
)
class TblPostCategory {
    @PrimaryKey
    public String id;

    @ColumnInfo(name = "user_id")
    public String postId;
}
Run Code Online (Sandbox Code Playgroud)

但是TblPostCategory取决于两个外键:post_idcategory_id来自TblPostTbCategory.

如何使用房间注释描述关系?

sqlite android android-sqlite android-room

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

如何将Android任务转换为Kotlin Deferred?

Firebase匿名登录返回任务(基本上是Google承诺实施):

val task:Task<AuthResult> = FirebaseAuth.getInstance().signInAnonymously()
Run Code Online (Sandbox Code Playgroud)

如何创建一个signInAnonymous包装器:

  • 这是一个suspend功能,等待task完成

    • suspend fun signInAnonymous(): Unit
  • 它返回一个Deferred对象,异步传递结果

    • fun signInAnonymous() : Deferred

android kotlin firebase kotlinx.coroutines

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

分离对Activity和GoogleApiClient的关注

像往常一样,我的代码中有很多代码,我LoginActivity真的更愿意将Activity责任与Google Play注册分开.

LoginActivity多次重写此代码之后,在许多不同的应用程序中,简单(而不是那么优雅)的解决方案是将Google API客户端创建为Application类对象.但是,由于连接状态会影响用户体验流程,因此我从未对这种方法感到高兴.

有一种优雅的方式放置在GoogleApiClient外面Activity吗?

android design-patterns google-api-client google-plus google-play-services

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

我可以使用 VSCode 在本地运行/调试 Heroku Node.js 应用程序吗?


TL; DR

在Microsoft VSCode v1.6.1上,如何:

  1. 正确设置运行时可执行文件?
  2. 正确传递Heroku 参数
  3. 运行Heroku Node.js应用程序?
  4. 调试Heroku Node.js应用程序?

细节

我创建了一个Heroku Node.js应用程序,该应用程序使用 CLI 命令启动:

heroku local web
Run Code Online (Sandbox Code Playgroud)

并在端口 5000 成功启动。

我正在尝试使用Microsoft Visual Studio Code进行调试,使用以下launch.json配置:

{
    "name": "Launch",
    "type": "node",
    "request": "launch",
    "program": "${workspaceRoot}/app.js",
    "stopOnEntry": false,
    "args": [],
    "cwd": "${workspaceRoot}",
    "preLaunchTask": null,
    "runtimeExecutable": "/usr/local/bin/heroku",
    "runtimeArgs": [
        "local web",
    ],
    "env": {
        "NODE_ENV": "development"
    },
    "console": "internalConsole",
    "sourceMaps": false,
    "outFiles": []
}
Run Code Online (Sandbox Code Playgroud)

但是 VSCode 会自动将--debug-brk参数传递给 …

heroku node.js visual-studio-code

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

IntentService是Command Pattern的一个实现吗?

根据维基百科:

"在面向对象的编程中,命令模式是一种行为设计模式,其中一个对象用于封装执行操作或稍后触发事件所需的所有信息.此信息包括方法名称,拥有的对象方法参数的方法和值."

根据施密特教授的文章,一个命令有:

  • 与时间无关的应用程序逻辑执行.应用程序逻辑的封装允许对其进行排队并在不同的时间点执行它.
  • 与上下文无关的应用程序逻辑执行.应用逻辑和上下文之间的分离允许执行在独立的环境中,诸如在不同的线程或使用不同的状态中的应用.
  • 应用逻辑的可交换性.应用程序逻辑和上下文之间的分离允许更容易地交换应用程序逻辑.

如果将所有信息封装到a中Intent,则onHandleIntent作为命令执行程序的抽象方法,就像在命令处理器模式文本中描述的那样.

因此,您只需将命令执行委派给操作系统,而不是显式实现执行程序以调用命令.

所以问题是:

  1. IntentService是命令模式的框架实现吗?
  2. 在肯定的情况下,为什么有些Android MVP实现显式实现了自己的执行器而不是使用框架提供的执行器?

java mvp android design-patterns

5
推荐指数
0
解决办法
215
查看次数

如何将bash定义为默认Windows终端命令处理器?

微软已经在Windows Store上发布了Windows Terminal的预览版,该版本允许使用PowerShell,命令提示符和Bash(使用Windows Linux子系统)来处理命令。

由于PowerShell是默认处理器,因此每次启动终端时,我都需要再次将其更改为Linux Bash。

是否可以将默认处理器定义为Linux,而不是一遍又一遍地将其重置?

bash windows-subsystem-for-linux windows-terminal

5
推荐指数
1
解决办法
363
查看次数