小编and*_*ash的帖子

为聊天模型定义房间实体之间的一对多关系

我开始使用 Room 数据库并浏览了几个文档来创建房间实体。这些是我的关系。一个聊天频道可以有很多对话。所以这是一对多的关系。因此我创建了如下实体。

渠道实体

@Entity(primaryKeys = ["channelId"])
@TypeConverters(TypeConverters::class)
data class Channel(
    @field:SerializedName("channelId")
    val channelId: String,
    @field:SerializedName("channelName")
    val channelName: String,
    @field:SerializedName("createdBy")
    val creationTs: String,
    @field:SerializedName("creationTs")
    val createdBy: String,
    @field:SerializedName("members")
    val members: List<String>,
    @field:SerializedName("favMembers")
    val favMembers: List<String>
) {
  // Does not show up in the response but set in post processing.
  var isOneToOneChat: Boolean = false
  var isChatBot: Boolean = false
}
Run Code Online (Sandbox Code Playgroud)

对话实体

@Entity(primaryKeys = ["msgId"],
    foreignKeys = [
        ForeignKey(entity = Channel::class,
                parentColumns = arrayOf("channelId"),
                childColumns = arrayOf("msgId"),
                onUpdate = CASCADE, …
Run Code Online (Sandbox Code Playgroud)

database android one-to-many android-database android-room

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

无法构建:如何为新模块添加 Android 构建配置

现在我正在将我的 Android 代码转换为模块化架构方法。尝试从“聊天”模块添加对“应用程序”模块的依赖项时遇到问题。

我有以下“app”模块的构建配置。

android {

lintOptions {
    checkReleaseBuilds false
    abortOnError false
}

signingConfigs {
    companydevconfig {
        keyAlias 'company'
        keyPassword '123456'
        storeFile file('../app/jksFils/company_dev.jks')
        storePassword '123456'
    }
    companyqaconfig {
        keyAlias 'company'
        keyPassword '123456'
        storeFile file('../app/jksFils/company_qa.jks')
        storePassword '123456'
    }
    companyprodconfig {
        keyAlias 'company'
        keyPassword '123456'
        storeFile file('../app/jksFils/release.keystore')
        storePassword '123456'
    }
}

compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
    applicationId "com.company.employee.dev"
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "1.13"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
aaptOptions {
    cruncherEnabled = false
}
testOptions {
    unitTests.returnDefaultValues = …
Run Code Online (Sandbox Code Playgroud)

android android-build build.gradle android-gradle-plugin android-module

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

触发少数高优先级通知后的 Firebase 推送通知延迟

我使用 Firebase 高优先级推送通知在 Android 设备中触发恐慌警报。对于最初的几次推送尝试,推送通知会立即到达并且效果很好。但是当我在一定时间后不断触发推送通知时,延迟会不断增加。

我希望它立即触发,因为它是恐慌情况。

我还遵循了以下文档

高优先级:FCM 尝试立即传递高优先级消息,允许 FCM 服务在必要时唤醒睡眠设备并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常会导致用户与您的应用或其通知进行交互。如果 FCM 检测到他们没有检测到的模式,您的消息可能会被取消优先级。Android P 引入了应用待机存储桶,它限制了您可以发送到应用的 FCM 高优先级消息的数量,这些消息不会导致用户使用您的应用或查看通知。如果在响应高优先级消息时以用户可见的方式显示通知,则该消息将不会消耗您的应用备用存储桶配额。

由于一小部分 Android 移动用户使用高延迟网络,因此请避免在显示通知之前打开与服务器的连接。在允许的处理时间结束之前回调服务器可能对高延迟网络上的用户有风险。相反,将通知内容包含在 FCM 消息中并立即显示。如果您需要在 Android 上同步其他应用内内容,您可以安排 FJD 作业或 JobIntentService 在后台处理。

如何确保尽快触发高优先级消息?在所有情况下都可能在一分钟内。

android push-notification firebase firebase-cloud-messaging

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

双击自定义视图将打开2个活动

我的片段中没有几个自定义的六边形视图,双击六边形视图可打开2个活动。我尝试了几种方法来避免这种行为,但似乎都没有用。不知道为什么以下事情不起作用。

我已经尝试了这篇文章《Android防止双击按钮》中的所有内容,但在我的情况下,这些都不起作用。我不确定在这种情况下到底有什么奇怪的。

我尝试过的第一件事是通过将“活动”启动模式设置为“ singleTop”。那没用。所以我尝试了其他方法,例如singleInstance,singleTask。

然后我尝试禁用单击六角形视图并在onResume中启用它。即使那没有用。尝试保存单击时的最终单击时间。即使那没有用。

这是我的代码片段。

public class MenuFragment extends BaseFragment implements 
OnHexagonClickListener{
....
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_land_menu, container, false);
    ScrollView scroll_hexagon = view.findViewById(R.id.scroll_hexagon);
    isFirst = true;
    loadMenuData();
    scroll_hexagon.post(new Runnable() {
        @Override
        public void run() {
            int design_hexagon_width = getResources().getDimensionPixelSize(R.dimen.dimen_190dp);
            int design_hexagon_height = getResources().getDimensionPixelSize(R.dimen.dimen_160dp);
            int design_padding_horizontal = getResources().getDimensionPixelSize(R.dimen.dimen_5dp);
            int design_margin_horizontal = getResources().getDimensionPixelSize(R.dimen.dimen_3dp);
            int design_margin_vertical = getResources().getDimensionPixelSize(R.dimen.dimen_5dp);
            int design_margin_top = 0; //getResources().getDimensionPixelSize(R.dimen.dimen_5dp);

            int scroll_width = scroll_hexagon.getWidth();
            int hexagon_width …
Run Code Online (Sandbox Code Playgroud)

android view launchmode android-activity

4
推荐指数
1
解决办法
125
查看次数