小编Eri*_*nge的帖子

从adb shell读取二进制stdout数据?

是否可以从adb shell命令读取二进制stdout?例如,如何使用screencap的所有示例包括两个步骤:

adb shell screencap -p /sdcard/foo.png
adb pull /sdcard/foo.png
Run Code Online (Sandbox Code Playgroud)

但是,该服务支持写入stdout.例如,您可以执行以下操作:

adb shell "screencap -p > /sdcard/foo2.png"
adb pull /sdcard/foo2.png
Run Code Online (Sandbox Code Playgroud)

这同样有效.但是,如何阅读亚行的产出呢?我想做的是以下内容:

adb shell screencap -p > foo3.png
Run Code Online (Sandbox Code Playgroud)

并避免中间写入SD卡.这会生成看起来像PNG文件的strings foo3.png东西(正在运行生成带有IHDR,IEND等的东西)并且大小大致相同,但就图像阅读器而言,文件已损坏.

我也尝试在java中使用ddmlib来做到这一点,结果是一样的.我很乐意使用任何必要的图书馆.我的目标是减少获取捕获的总时间.在我的设备上,使用双命令解决方案,获取图像大约需要3秒钟.使用ddmlib和捕获stdout需要不到900毫秒,但它不起作用!

是否有可能做到这一点?

编辑:这是两个文件的hexdump.第一个,screen.png来自stdout并且已损坏.第二个,xscreen来自双命令解决方案并且有效.图像应在视觉上相同.

$ hexdump -C screen.png | head
00000000  89 50 4e 47 0d 0d 0a 1a  0d 0a 00 00 00 0d 49 48  |.PNG..........IH|
00000010  44 52 00 00 02 d0 00 00  05 00 08 06 00 00 00 6e  |DR.............n|
00000020  ce …
Run Code Online (Sandbox Code Playgroud)

android adb

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

将值从Dialog传递回Android上的Activity的强大方法?

这个问题已经出现过几次了,我已经阅读了所有答案,但我还没有看到一种真正有效的方法来处理这个问题.在我的解决方案,我用的听众从调用ActivityAlertDialog像这样:

public class MyDialogFragment extends DialogFragment {

    public interface MyDialogFragmentListener {
        public void onReturnValue(String foo);
    }

    public void init(boolean someValue)
    {
        sSomeValue = someValue;
        listeners = new ArrayList<MyDialogFragmentListener>();
    }
    static boolean sSomeValue;
    private static ArrayList<MyDialogFragmentListener> listeners;

    public void addMyDialogFragmentListener(MyDialogFragmentListener l)
    {
        listeners.add(l);
    }

    public void removeMyDialogFragmentListener(MyDialogFragmentListener l)
    {
        listeners.remove(l);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(R.string.title)
           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {
                   for (MyDialogFragmentListener …
Run Code Online (Sandbox Code Playgroud)

android dialog android-alertdialog

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

如何在javascript中使用代理来捕获构造函数同时维护原型链?

我想创建一个构造函数对象,其继承正常工作,但捕获构造函数以便我可以操作实例对象。使用Proxy() 几乎解决了这个问题,但它似乎搞砸了继承。请注意以下没有代理的示例:

> const B = function() {}
undefined
> B.name
'B'
> class C extends B {}
[Function: C]
> B.prototype == C.prototype.__proto__
true
> var instance = new C()
undefined
> C.prototype == instance.__proto__
true
> instance.__proto__
C {}
Run Code Online (Sandbox Code Playgroud)

现在,如果我向 capture 添加一个代理construct(target,args),它将正确捕获构造函数,但它不会像没有代理那样完全保留内容。请注意,构造函数所做的只是向控制台打印一条消息,记录其捕获。但否则(我认为)它应该做出相同的反应。但是,当我创建一个类来扩展代理函数时,似乎扩展函数完全丢失了。请注意,最后四行给出的结果与上面不同。

> const handler = { construct(target,args) {
... console.log('Captured!'); return new target(...args); } }
undefined
> const proxy_B = new Proxy(B, handler)
undefined
> proxy_B.name
'B'
> class C2 extends proxy_B {} …
Run Code Online (Sandbox Code Playgroud)

javascript proxy constructor ecmascript-6

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

如何在Amazon EMR上终止正在运行的地图任务?

我有一个在32个点实例上使用Hadoop 0.20运行的工作.它已经运行了9个小时,没有任何错误.在此期间它已经处理了3800个任务,但我注意到只有两个任务似乎被卡住并且已经独自运行了几个小时(显​​然是因为他们没有超时而做出响应).这些任务通常不会超过15分钟.我不想失去已经完成的所有工作,因为它花了我很多钱.我真的只想杀死这两个任务并让Hadoop重新分配它们或者只是将它们视为失败.直到他们停止,我无法从其他3798地图获得减少结果!

但我无法弄清楚如何做到这一点.我已经考虑过要弄清楚哪些实例正在运行任务,然后终止这些实例,但是

  1. 我不知道如何找出哪些实例是罪魁祸首
  2. 我担心它会产生意想不到的影响.

我如何杀死个别地图任务?

amazon hadoop map emr

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