- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我从后台服务 (IntentService) 启动声音,它由系统警报触发(声音结束时服务的线程通常会死掉)。
相关代码是这样的:
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (alert == null)
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(this, alert);
final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) != 0) {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mMediaPlayer.setLooping(false);
mMediaPlayer.prepareAsync();
mMediaPlayer.start();
}
这个东西工作正常,但每次播放声音时,我都会在 log cat 中得到这个:
WARN/MessageQueue(7508):Handler{482f97e0} 向死线程上的 Handler 发送消息
我认为这可能是由于声音结束时对后台线程的回调,或者我在完成前一个媒体播放器之前反复使用媒体播放器。有什么想法吗?
最佳答案
非常老的问题,但是@Alex' xkcd link说服我无论如何都要回答。
我有一个非常相似的情况,并且能够通过 Runnable 实例化 MediaPlayer 来达到预期的结果。在我的例子中,一个 IntentService 调用一个正在进行的服务,它负责媒体播放。我的解决方案如下所示(仅相关代码):
public class HelperService extends Service {
public void play() {
Thread thread = new Thread(new Runnable() {
public void run() {
soundStart();
}
});
thread.start();
}
private void soundStart() {
try {
AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(R.raw.sound);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
mp.reset();
return false;
}
});
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// do stuff
}
});
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
关于Android 媒体播放器导致 "dead thread"消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6828209/
这是一个简单的问题,但它一直困扰着我和我的日志。 我有一个配置: akka { log-dead-letters-during-shutdown = off log-dead-letters
这是 my question here 的一种扩展. 我有 3 个类(class)。 我的主要内容: import java.io.*; public class ConnectionManager
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
我知道在Java中的垃圾收集期间,不再有任何引用的对象会被标记为“死亡”,以便垃圾收集器可以将它们从内存中删除。 我的问题是,在垃圾收集阶段,所有“死亡”对象是否都会从内存中删除,或者其中一些对象会存
在那里, 我修改了 Lua 5.0 在线文档中的“perm”示例:http://www.lua.org/pil/9.3.html .我所做的是将 __call() 元方法重新指向 perm() 函数。
我正在开发一个 JavaEE 应用程序,我有以下方法: public String alterar_data_ato_med (int cod_ato, GregorianCalendar nova_
if (myCondition1 && myCondition2 && myCondition3) { ... } 我写了这段代码并运行成功。但我收到了关于 (...) 的一部
“死牛肉”一词是什么意思?我是从一个面试问题中读到的。它与ipv6有关。我以为它可能是一个随机的十六进制数字,例如“快速的棕色狐狸跳过了懒狗”。 我的理解正确吗?还是更有意义? 最佳答案 http:/
“死牛肉”这个词是什么意思?我是从一个面试问题中读到的。和ipv6有关系。我认为它可能是一个随机的十六进制数字,用于示例,例如“敏捷的棕色狐狸跳过了懒狗”。 我的理解正确吗?还是有更重要的意义? 最佳
https://docs.docker.com/engine/reference/commandline/ps/说 status One of created, restarting, running
我有一些正在为类(class)编写的 VHDL 代码。但是,综合工具将 cell3、cell2 和 cell1 识别为“死”代码,并且不会对其进行综合。 我真的不知道是什么导致单元格 3、2、1 在合
自 7 月 17 日起,旧的分享按钮在我管理的所有网站上都停止工作了。 我已经阅读了其他面临类似问题的用户的报告,但我找不到任何官方信息。 您知道是否有任何官方资源可用吗? 最佳答案 更新:截至 20
public class DeadCodeInLuna { public static void main(String[] args) throws IOException {
我有许多 UIView 进入 View ,然后离开 View 并且未被使用。但是,我相信他们中的一些人即使在他们离开后仍会收到通知,这会导致问题。 在 UIView“父”容器上: if(self._c
我正在尝试查找未被任何其他代码调用的私有(private)方法 (CA1811) https://msdn.microsoft.com/en-us/library/ms182264(v=vs.110)
对于那些不确定“受约束的非确定性”是什么意思的人,我推荐 Mark Seeman 的 post . 这个想法的本质是只对影响 SUT 行为的数据具有确定性值的测试。不“相关”的数据在某种程度上可以是“
首先,澄清一下,我不是在谈论解除对无效指针的引用! 考虑以下两个示例。 示例 1 typedef struct { int *p; } T; T a = { malloc(sizeof(int) };
我在我们的代码库中遇到了这个代码片段: function initDoughnutChart(target) { var labels = $(target).data("labels").toS
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在使用一个继承的代码库,其中包含数千行注释掉的代码。我知道以前的编码员打算为后代保存他所有的辛勤工作,而不是简单地将其删除,但是:我永远不会阅读它,它只会妨碍您。一个问题示例是,当我对某些代码段执
我是一名优秀的程序员,十分优秀!