小编dco*_*cow的帖子

如果获得唤醒锁并且我的应用程序崩溃了,我该怎么办?

当标志设置为true时,我的应用程序始终运行后台服务.如果是这种情况,即使应用程序关闭,此后台服务仍需要CPU时间.如果我获得唤醒锁(不是用于"屏幕开启"目的而是用于此后台服务)然后应用程序崩溃或用户FC它,那么我无法释放此唤醒锁.

预期结果是什么?

Android知道这个并发布唤醒锁吗?

我应该以什么方式管理这种情况?

crash android process kill-process wakelock

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

旋转时,MediaPlayer向前跳过约6秒

我在片段中有一个MediaPlayer,它在配置更改时保留其实例.播放器正在播放从我的资源目录加载的视频.我设置了方案,目的是重现YouTube应用程序播放,其中音频在配置更改期间继续播放,并且显示器已分离并重新连接到媒体播放器.

当我开始播放并旋转设备时,位置会向前跳跃约6秒,并且(必要时)音频会在发生这种情况时切断.然后,播放继续正常进行.我不知道是什么导致这种情况发生.

根据要求,这是代码:

public class MainFragment extends Fragment implements SurfaceHolder.Callback, MediaController.MediaPlayerControl {

    private static final String TAG = MainFragment.class.getSimpleName();

    AssetFileDescriptor mVideoFd;

    SurfaceView mSurfaceView;
    MediaPlayer mMediaPlayer;
    MediaController mMediaController;
    boolean mPrepared;
    boolean mShouldResumePlayback;
    int mBufferingPercent;
    SurfaceHolder mSurfaceHolder;

    @Override
    public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) {
        super.onInflate(activity, attrs, savedInstanceState);
        final String assetFileName = "test-video.mp4";
        try {
            mVideoFd = activity.getAssets().openFd(assetFileName);
        } catch (IOException ioe) {
            Log.e(TAG, "Can't open file " + assetFileName + "!");
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) { …
Run Code Online (Sandbox Code Playgroud)

audio android surfaceview android-mediaplayer

6
推荐指数
2
解决办法
3414
查看次数

Git-hooks pre-push脚本不通过STDIN接收输入

GIT-钩预推文档指出的第一行的stdin将与本地ref和sha,并远程ref和SHA这样来填充:

<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF

但是,我的简单预推脚本:

#!/bin/bash

echo "params=[$@]"

read line
echo "stdin=[$line]"

exit 1
Run Code Online (Sandbox Code Playgroud)

$git push运行时返回以下输出:

params=[origin [url]:[branch].git]
stdin=[]
error: failed to push some refs to '[remote]'
Run Code Online (Sandbox Code Playgroud)

脚本的参数如文档中所指定(远程的名称和路径).错误是预期的,因为我的脚本以状态1退出.但是,我似乎无法弄清楚为什么我没有收到文档指定的stdin上的本地和远程引用.

这是git中的错误吗?或者,我错过了什么?

git bash githooks

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

为什么使用隐式意图启动服务不安全?

当我以隐含意图启动服务时,我收到警告:

使用startservice的隐含意图并不安全:...

为什么?

编辑:

我正在使用我自己的内部类别,没有其他应用程序应该使用,我的服务不会导出android:exported="false".

android intentfilter android-intent

3
推荐指数
1
解决办法
1万
查看次数

Xcode:在框架中使用静态库?

我有一个链接两个静态库的框架。每个静态库都是一个目标,框架是一个目标。框架封装了静态库,框架的客户端只关心调用框架代码(反过来可能调用每个静态库的代码)。是否可以让框架包含所需的头文件和目标文件?当我构建时,我得到了臭名昭著的Include of non-module header inside framework module错误。每个静态库都导出其标头,我已将标头添加为框架中的公共标头。仍然没有运气(我认为有一个不需要这个的解决方案)。

macos xcode static-libraries ios

3
推荐指数
1
解决办法
7846
查看次数

如何等待命名管道的另一端打开?

我想在2个进程(AB)之间使用2个命名管道(a2bb2a)交换数据,如下所示:

  1. Process使用A创建a2bb2a管道mkfifo(3).
  2. 流程A启动流程B(使用fork(),exec*()甚至system())
  3. A等到B open()s a2bb2a
  4. A write()的数据 a2b
  5. B read()来自的数据 a2b
  6. B write()的数据 b2a
  7. A read()来自的数据 b2a

如何让进程A等待进程B open()s命名管道的另一端? - 即如何实施第3步?

编辑1:正如@EJP所提到的,可以使用读/写/选择来实现步骤3.但是,我想知道是否还有其他方法.

c c++ unix posix named-pipes

3
推荐指数
1
解决办法
1050
查看次数

为什么“git-subtree”从 git-scm 书中删除了?

在我的搜索引擎上查找文档时git-subtree将显示https://git-scm.com/docs/git-subtree的链接,但是当我访问该链接时,我会被重定向到https://git-scm.com/docs

子树发生了什么?是已弃用还是这只是一个错误?如果它被弃用,是否有一个带有理由的公告以及可能取代它的建议(例如是否有计划引入git-subrepo)?

git git-subtree

3
推荐指数
1
解决办法
912
查看次数

Java中+(加号)运算符的优先级是什么?

plus运算符的优先级仅在java教程优先级表中列出一次.但是以下Java表达式:

String unexpected = "1 + 1 = " + 1 + 1; 
String expected   = "1 + 1 = " + (1 + 1);
System.out.println(unexpected);
System.out.println(expected);
Run Code Online (Sandbox Code Playgroud)

导致此输出:

1 + 1 = 11
1 + 1 = 2
Run Code Online (Sandbox Code Playgroud)

这是否意味着加号运算符在用于连接字符串时具有更高的优先级,或者它是否表示加号运算符的优先级对于字符串和数字没有区别,但是它只是从左到右进行评估?

java

2
推荐指数
1
解决办法
245
查看次数

openssl 是否理解本地链路 IPv6 地址?

我无法理解为什么这个命令不起作用:

openssl s_client -connect [fe80::xxxx:xxxx:xxxx:xxxx]:yyyy
Run Code Online (Sandbox Code Playgroud)

注意:我已经用 's 混淆了上面的链接本地地址x,但我有一些有效的链接本地 ipv6 地址。 yyyy是端口号。

我收到错误:

1995535248:error:02002016:system library:connect:Invalid argument:../crypto/bio/b_sock2.c:108:
1995535248:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:109:
connect:errno=22
Run Code Online (Sandbox Code Playgroud)

我也尝试过添加单引号/双引号,但导致了同样的错误:

openssl s_client -connect '[fe80::xxxx:xxxx:xxxx:xxxx]:yyyy'
Run Code Online (Sandbox Code Playgroud)

我使用的是 OpenSSL 1.1.0f 版本,它应该支持 IPv6。

使用 IPv4 地址,它可以工作。

openssl ipv6 link-local

2
推荐指数
1
解决办法
6516
查看次数

你能自动将一个类的对象转换为子类并在Java中调用重载方法吗?

我有以下设置:

class Base {};
class ImplA extends Base {};
class ImplB extends Base {};
class ImplC extends Base {};

Base baseFactory(int type) {
    switch(type) {
    case 0:
        return new ImplA();
    case 1:
        return new ImplB();
    case 2:
        return new ImplC();
}

Base a = baseFactory(0);
Base b = baseFactory(1);
Base c = baseFactory(2);


List<Base> list = new ArrayList<Base>();

list.add(a);
list.add(b);
list.add(c);

// Somewhere else I have:
interface BaseHandler {
    process(ImplA a);
    process(ImplB b);
    process(ImplC c);
};
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够做的是:

class Processor { …
Run Code Online (Sandbox Code Playgroud)

java polymorphism overloading factory-pattern

0
推荐指数
1
解决办法
110
查看次数