我有一个Service我AsyncTask从一个给定的计时器开始做后台任务.我的需求需要短暂的网络任务,这就是我坚持的原因AsyncTask.
从AsyncTask我正在进行需要的多个操作(例如启动通知)Context.现在,当我初始化Context我AsyncTask我得到一个警告" 这个领域泄漏上下文对象. "
我已经看到了许多关于相同的问题,但它们都与之相关Activity/Fragment.所以我的问题是,如何Context在我的AsyncTask(顶级课程)中使用而不泄漏它?
我正在尝试做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:尝试WebView以Foreground Service仍然相同的结果进行初始化。
更新4:使用Chrome(76.0.3809.132)在https://appr.tc/上尝试进行了演示调用。观察到相同的结果。
更新5:尝试使用Firefox进行演示调用,并且效果 …
我在我的项目中使用第三方库,从那时起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)