小编Mus*_*sir的帖子

将上下文从Service传递到Asynctask而不泄漏它

我有一个ServiceAsyncTask从一个给定的计时器开始做后台任务.我的需求需要短暂的网络任务,这就是我坚持的原因AsyncTask.

AsyncTask我正在进行需要的多个操作(例如启动通知)Context.现在,当我初始化ContextAsyncTask我得到一个警告" 这个领域泄漏上下文对象. "

我已经看到了许多关于相同的问题,但它们都与之相关Activity/Fragment.所以我的问题是,如何Context在我的AsyncTask(顶级课程)中使用而不泄漏它

java android memory-leaks android-asynctask

11
推荐指数
3
解决办法
6154
查看次数

一分钟后音频停止录制

我正在尝试做WebRTC,但一切正常,但似乎存在问题,即,如果屏幕保持关闭状态超过一分钟,音频将停止录制,这意味着来自设备音频将停止,直到我将屏幕打开一次再次

我尝试了什么?

1)我尝试设置webSettings.setMediaPlaybackRequiresUserGesture(false);它对问题没有帮助。

2)我还尝试wakelock在正在做WebRTC的活动中添加一个,但它也没有起作用。

以下是清单中声明的​​权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)

在此活动中,我正在授予麦克风的权限WebChromeClient

@Override
public void onPermissionRequest(final PermissionRequest request) {
    request.grant(request.getResources());
}
Run Code Online (Sandbox Code Playgroud)

我想要的是?

我希望能够继续通话而不会打扰用户重新打开屏幕。请指出正确的方向。

谢谢!

更新:我尝试在Chrome中加载WebRTC网址,并且发生了同样的事情,即音频停止从我的设备记录。

更新2:当音频停止从设备发出时添加日志。

2019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: getAudioPolicyConfig: audioParam;outDevice
2019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: getNewOutputDevice() selected device 2
2019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: ### curdevice : 2
2019-08-06 17:18:47.307 4332-22405/? V/APM_AudioPolicyManager: AudioPolicyManager:setRecordSilenced(uid:99066, silenced:1)
2019-08-06 17:18:47.308 4332-22405/? V/APM_AudioPolicyManager: AudioPolicyManager:setRecordSilenced(uid:11556, silenced:1)
Run Code Online (Sandbox Code Playgroud)

更新3:尝试WebViewForeground Service仍然相同的结果进行初始化。

更新4:使用Chrome(76.0.3809.132)在https://appr.tc/上尝试进行了演示调用。观察到相同的结果。

更新5:尝试使用Firefox进行演示调用,并且效果 …

java android

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

如何修复这些proguard警告

我在我的项目中使用第三方库,从那时起proguard发出这些警告,我无法与该库相关,这是我正在使用的库:Lollipin.

警告我得到了

Warning:android.databinding.DataBindingUtil: can't find referenced class android.databinding.DataBinderMapper
Warning:android.databinding.ViewDataBinding: can't find referenced class android.databinding.DataBinderMapper
Warning:there were 43 unresolved references to classes or interfaces.
Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
Run Code Online (Sandbox Code Playgroud)

我试过了什么?

我编辑过proguard-rules.pro像这样:

-keeppackagenames com.github.orangegangsters.lollipin
Run Code Online (Sandbox Code Playgroud)

仍然没有去!我也试图清理和重建项目,但也没有成功.

这是build.gradle:

apply plugin: 'com.android.application'

 android {
compileSdkVersion 24
buildToolsVersion '24.0.2'

defaultConfig {
    applicationId "com.example.teach"
    minSdkVersion 15
    targetSdkVersion 24
    versionCode 27
    versionName "5.0"
}
buildTypes {
    release {

        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }

}


} …
Run Code Online (Sandbox Code Playgroud)

android proguard android-studio

9
推荐指数
2
解决办法
6006
查看次数