小编tyc*_*czj的帖子

扩大布局时出现OutOfMemoryError

我在开发人员控制台中一直看到此内存不足错误,但我不知道为什么

日志:

android.view.InflateException: Binary XML file line #52: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:518)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212)
at android.app.Dialog.setContentView(Dialog.java:421)
at ecm2.android.MessageDialog.PopUpMessage(MessageDialog.java:90)
at ecm2.android.MainActivity.PopMessage(MainActivity.java:1830)
at ecm2.android.MainActivity$10.onItemClick(MainActivity.java:1355)
at android.widget.AdapterView.performItemClick(AdapterView.java:284)
at android.widget.ListView.performItemClick(ListView.java:3513)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3703)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
at android.view.LayoutInflater.createView(LayoutInflater.java:505)
... 24 more
Caused by: java.lang.OutOfMemoryError: …
Run Code Online (Sandbox Code Playgroud)

android out-of-memory

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

一旦发送相机意图就会调用onActivityResult

我正在使用相机意图在我的应用程序中启动相机,但一旦意图被解雇onActivityResult就会被解雇,我甚至还没有拍照.

当我拍照时,选择它并返回我的活动,onActivityResult根本不会被调用

这是我如何启动相机

PackageManager pm = getPackageManager();
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
        Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        File tempDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"Mobile Map");
        if (!tempDir.exists()) {
            if (!tempDir.mkdir()) {
                Toast.makeText(this,
                        "Please check SD card! Image shot is impossible!",
                        Toast.LENGTH_SHORT).show();
            }
        }

        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",Locale.US).format(new Date());
        File mediaFile = new File(tempDir.getPath() + File.separator+ "IMG_" + timeStamp + ".jpg");

        photoUri = Uri.fromFile(mediaFile);
        camera.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
        startActivityForResult(camera, CAMERA_REQUEST);
    } else {
        Toast.makeText(this,"This device does not have a rear facing camera",Toast.LENGTH_SHORT).show(); …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-camera-intent

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

GcmNetworkManager OneoffTask ExecutionWindow需要吗?

GcmNetworkManager当用户恢复互联网连接时,我开始实现触发同步

在查看OneoffTask的文档时,它说setExecutionWindow是必需的

用于创建一次性任务的强制设置器

不过,我只希望当用户有上网本执行这听起来像用户有互联网,但在窗口之前,可以执行windowStartDelaySecondswindowEndDelaySeconds.

那么这是否意味着网络管理员可以在某个时间之前执行任务,windowEndDelaySeconds或者这意味着一旦互联网恢复它将在那个时间执行?

android google-cloud-messaging gcm-network-manager

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

在应用更新时更新Firebase实例ID

回到GCM时代,建议您每次向应用程序发布更新时,都应该检查是否有新的注册ID(因为在更新后不能保证相同)应用程序启动时.

FCM的情况仍然如此吗?我找不到任何关于此的文档

android firebase firebase-cloud-messaging

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

如何从JobIntentService删除重复的意图

JobIntentService每当有推送通知进入时,我都会启动该服务,以通知服务获取更多数据。当应用程序处于前台时,一切都会正常进行。

当应用程序在后台运行并且有多个推送通知进入时,该意图被排队,并且它多次执行相同的意图,这给服务器带来了不必要的压力,因为对服务器的第一次调用将获得它需要的所有信息,从而使另一个推送通知中不必要的排队意图。

是否有要取消或不向队列添加相同意图的方法,还是有其他方法可以防止对服务器的额外调用?

android intentservice android-intentservice jobintentservice

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

无法使用键盘导航导航到滚动视图之外的按钮

我有一个布局,其中有页眉、页脚和滚动视图

这是我的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/header"
        android:text="@string/player_settings" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/footer"
        android:layout_below="@id/header">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/text_margin"
            android:orientation="vertical">

        .....

            <Button
                android:id="@+id/start"
                android:layout_marginStart="@dimen/text_margin"
                android:layout_marginTop="@dimen/text_margin"
                android:paddingStart="@dimen/button_padding"
                android:paddingEnd="@dimen/button_padding"
                android:text="Start" />

            <Button
                android:id="@+id/close"
                android:layout_marginStart="@dimen/text_margin"
                android:layout_marginTop="@dimen/text_margin"
                android:layout_marginBottom="32dp"
                android:paddingStart="@dimen/button_padding"
                android:paddingEnd="@dimen/button_padding"
                android:text="Close"
                android:nextFocusDown="@+id/save"/>

        </LinearLayout>

    </ScrollView>

    <LinearLayout
        android:id="@+id/footer"
        android:layout_alignParentBottom="true">

        <Button
            android:id="@+id/save"
            android:layout_marginStart="16dp"
            android:text="Save" />

    </LinearLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

该应用程序将与键盘一起使用,因此我使用箭头按钮进行导航,当我将滚动视图的底部移到close按钮时,它应该转到保存按钮,但它只是停留在关闭按钮上。正如你所看到的,我什nextFocusDown至将设置为保存按钮,但它仍然没有去。

任何想法为什么它卡在按钮上并且从不导航到滚动视图外的保存按钮?

android

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

Ktor 响应流

我正在尝试调用一个 twitter 端点,该端点为您提供持续的 json 结果流回客户端

https://documenter.getpostman.com/view/9956214/T1LMiT5U#977c147d-0462-4553-adfa-d7a1fe59c3ec

我尝试像这样呼叫端点

        val url = "https://api.twitter.com/2/tweets/search/stream"
        _streamChannel = _client.get<ByteReadChannel>(token, url) //Stops here

        val byteBufferSize = 1024
        val byteBuffer = ByteArray(byteBufferSize)

        _streamChannel?.let {
            while (_streamChannel!!.availableForRead > 0) {
                _streamChannel!!.readAvailable(byteBuffer, 0, byteBufferSize)
                val s = String(byteBuffer)
                parseStreamResponseString(s).forEach {
                    emit(Response.Success(it))
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我的client.get代码是这样的

suspend inline fun <reified T> get(authKey: String, url: String): T? {
    val response = _client.get<HttpResponse>(url) {
        header("Authorization", "Bearer $authKey")
    }

    when (response.status.value) {
        in 300..399 -> throw RedirectResponseException(response)
        in 400..499 -> throw …
Run Code Online (Sandbox Code Playgroud)

http-streaming ktor

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

只能通过使用 releaseImplementation 和 debugImplementation 从 maven 添加 Kotlin Multiplatform Mobile 库

每次我将 Kotlin Multiplatform Mobile 库发布到 maven central 时,我似乎唯一能在 Android 应用程序中添加/使用 Android 依赖项的方法是同时添加releaseImplementationdebugImplementation

例子

releaseImplementation 'io.github.tyczj.lumberjack:Lumberjack-android:1.0.0@aar'
debugImplementation 'io.github.tyczj.lumberjack:Lumberjack-android-debug:1.0.0@aar'
Run Code Online (Sandbox Code Playgroud)

而不是“正常”的方式,你只有一个 implementation

implementation 'io.github.tyczj.lumberjack:Lumberjack-android:1.0.0'
Run Code Online (Sandbox Code Playgroud)

这是我的 build.gradle 文件

plugins {
    kotlin("multiplatform") version "1.4.32"
    id("com.android.library")
    id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
    id("maven-publish")
    id("signing")
}

group = "io.github.tyczj.lumberjack"
version = "1.0.2"

ext["signing.keyId"] = ""
ext["signing.password"] = ""
ext["signing.secretKeyRingFile"] = ""

repositories {
    google()
    mavenCentral()
    maven {
        setUrl("https://plugins.gradle.org/m2/")
    }
}

val javadocJar by tasks.registering(Jar::class) {
    archiveClassifier.set("javadoc")
}

val emptyJar by tasks.registering(Jar::class) {
    archiveAppendix.set("empty")
}

kotlin {
    android{ …
Run Code Online (Sandbox Code Playgroud)

android gradle maven kotlin kotlin-multiplatform

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

向服务发送 BroadcastReceiver 意图

通常你会启动这样的服务

Intent i = new Intent(context,MessageService.class);
context.startService(i);
Run Code Online (Sandbox Code Playgroud)

但我想做的是将在 a 中收到的意图发送BroadcastReceiver到服务。如果我按照上面所示的方式启动服务,将无法从BroadcastReceiver正确的地方获得意图?

基本上我只想BroadcastReceiver启动我的服务,然后让服务本身处理收到的意图

这可能吗?

android broadcastreceiver android-service

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

查询是否返回空游标

我总是看到人们说它的游标永远不会为空,所以你不需要检查是否为null,但是还有其他人说游标可以为null而你总是要检查它.

所以看看这里的查询方法,它确实显示返回null,所以我不知道我是否只是缺少一些东西,或者是人们说光标永远不会出错?

你或者你不需要在查询Cursor时检查是否为null?

android android-cursor android-sqlite

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