小编pul*_*988的帖子

意图开始活动 - 但不要带到前面

描述:

  • 活动A可见(或在后台)
  • 意图被一个有价值的额外广播接收,然后将附加内容传递给将用于启动活动A的新Intent I2.
  • 结果:如果活动在后台,请不要将活动带到前面.

码:

Intent I2= new Intent(context, MyActivity.class); 
I2.putExtra(..
I2.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); // | Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(I2);
Run Code Online (Sandbox Code Playgroud)

注意:我没有添加"android:taskAffinity"来表示..我认为你应该知道

flags android android-intent

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

java &&中的Bittorrent实现需要一些关于swarm行为的信息

我正在用Java开发一个bitTorrent客户端.我知道网上有很多图书馆,但我无能为力; 我想要自己的.无论如何,我注意到一些奇怪的行为,也许你们知道我缺少的东西:

  • 我正在尝试连接的所有对等体中大约80%导致连接失败(socketTimeOut或者"无法连接"错误).显然,从跟踪器接收对等体列表.我还通过尝试ping它们来随机测试一些IP; ping通常是成功的.
  • 当我连接时:
    • HandShake后连接断开50%,
    • 在30%我注意到一个奇怪的行为:我收到Handshake,我收到BitField(他们有所有的碎片),我被+20轰炸消息(我检查了他们已经在BitField中提到的那个片段的索引),然后他们放下了连接,这很奇怪.

(对于所有统计数据,数字并不准确.)

一些BitTorrent问题:

更新#4:由于考虑到答案,我切断了一些问题

  • 这是'80%失败的连接率问题': 我的80%未能连接费率的原因是什么?这不是坏运气,因为我试图连接的每个客户都没有我的空间.我正在听6881,但也测试了其他端口.昨天我取得了巨大的成功,接受了一堆连接(相同的代码,过去几周的一些变化),片段消息开始流动..所以我的代码并非完全没用.

  • 在关闭之前,torrent客户端是否会向跟踪器发送最后一条消息,event=stopped使其使用对等信息更新其内部数据库,以便它不会作为响应发送包含无用对等信息的列表?或者只是他们应该......因为它似乎真的让我收到死去的同龄人.

  • 收到的同行的顺序是否重要?也许完成百分比..或者真的是随机的.
  • 此外,我偶尔会收到一个端口为0的对等体,这使得我的Socket构造函数抛出异常.端口0是什么意思?我可以在任何端口上联系它吗?
  • 我的PeerId(我发送握手或向跟踪器宣布我的自我)会影响我尝试通信的torrent客户端是否会继续启动连接?这意味着如果我撒谎并说使用'-AZ2060-'作为我的身份证明我是Azureus客户?
  • 这是'可用性吓跑同行问题': 我的作品是否会吓跑同行?我正在尝试连接,我发送一个空的位域(我没有碎片[length: 1][Id = 5][payload: {}]); 似乎他们发送了bitfield,我发送了bitfield ..(有些发送像疯了一样有消息),他们意识到我很穷,他们放弃了我.握手后有些掉线连接.(太粗鲁了.)
  • 有没有使用经典端口间隔的好处:6881 - 6889?
  • 这是'不良同行问题列表': torrent客户端内部是否存在坏对等列表(如黑名单)?有时在找到一个好的同伴之后,我在我的测试中不断使用它的信息,但只接受了1/3连接.有时需要10分钟才能成功连接.

更新#1:似乎与μTorrent客户端的连接表现为上述模式(BITFIELD,HAVE轰击,紧密连接).我在本地测试了一堆bitTorrent客户端(μTorrent,BitTorrent,Vuze,BitCommet,Deluge),并且只在μTorrent上发现了这种模式.在其他人,沟通很好(HS,BITFIELD,UNCHOCE和快乐分享).现在,这个μTorrent可能是最流行的bitTorrent客户端(6/8连接开始是μTorrent),所以......任何想法?

更新#2:在保持"bad list,"它看起来确实如此(这实际上是有道理的).例如,使用μTorrent,我注意到以下无连接间隔(30秒,1分钟,1分30秒,2分钟......).通过"无连接"意味着,在先前的连接结束之后,x几秒钟没有接受新的连接.

更新#3:有消息轰炸可能是所谓的"懒惰的位域"(做了几个测试,在HAVE中提到的每个部分都不存在于BITFIELD中).我看到μTorrent和BitTorrent使用这种方法.

另一个结论是:有些客户在尊重BitTorrent规范方面更具限制性,如果违反规则将关闭连接.例如:我注意到BitTorrent和BitTornado,如果你发送一个bitfield消息但没有碎片他们会关闭连接(没有碎片=空位域..但规格说"它是可选的,如果客户端没有碎片则无需发送"),如果你发送任何类型的消息之前发送UNCHOKE消息(甚至没有兴趣),其他人会关闭连接.

更新#4: 因为我最初对第一个问题感兴趣(可能是因为我的80%连接速率失败的原因是什么?...被激起的问题可能更受欢迎),这里有一些解释为什么有时连接是不成功的:

1)如果我在停止前一个连接后立即开始与对等体的连接(通过停止 - 我的意思是关闭套接字):另一边的对等体直到下一次读/写才知道.

详细信息: - 我注意到了很多次,这在完成下载后更加明显..如果我关闭连接,那么直到它尝试发送新的KEEP_ALIVE(~2分钟)才会意识到这一点.但是如果我在交换REQUEST-PIECE时关闭,对等体会很快意识到.在关闭连接后的第一个场景中,我仍然存在于uTorrent对等选项卡中.如果我查看记录器选项卡,大约2分钟后,它会意识到我已经离开了.

2)似乎uTorrent看到我的BITFIELD消息被破坏了(显然应该在接收后关闭连接)(这不会发生总是..我也检查并重新检查,msg没问题和其他BT客户端没有这样的问题) .

详细信息: - 如果我查看uTorrent记录器选项卡,它会在我发送位域后显示"Disconnected:Bad packet" - 我打算尝试执行lazzy bitfield,也许我可以逃避这个(我也看到了大多数BT客户这样做)

3)(超过可能链接到#1)当uTorrent不允许我重新连接时,我在logger选项卡中看到:"Disconnect:已经有相同的连接(丢弃额外连接)"..目前我选择随机本地端口当启动一个新的连接时(看到这个在大多数BT客户端中实现),但这并没有欺骗它,他仍然看到我的同伴已经存在于他的"对等列表"中(可能是ip匹配).. Buuut:在30%的测试中,相同的情况,它确实允许我重新连接:) ..我还没有解释为什么

4)还有一件事:在你关闭uTorrent中的一个洪流之后,看起来'接触者的关注'仍然存在(通过我的意思是:右键单击+停止).这意味着我仍然可以启动连接,发送HANDSHAKE ..在此之后,我断开连接(它没有HANDSHAKE回来).uTorrent记录器中的消息:"Disconnect:No such torrent:80FF40A75A3B907C0869B798781D97938CE146AE",这个长字符串是我的信息哈希..在与其他BT客户端一起测试时看到了这一点.

更多信息:

  • uTorrent类型全上传/部分上传和完全下载的场景是成功的,部分下载的场景不是那么多......可能是由于#2
  • 我仍然使用uTorrent,bitField +有轰击+关闭连接..因为我记得在记录器选项卡中显示相同的消息"断开连​​接:坏包"..可能是由于#2 …

java sockets bittorrent

18
推荐指数
1
解决办法
1922
查看次数

是否可以从sdCard上的jar库动态加载Activity类并实际使用它?

我在sdCard上有1个.jar文件(我使用dx工具编译通常的.jar到dex ..否则android会在运行时抱怨)

我想要使​​用的课程实际上是一个活动&通过"使用"我的意思是膨胀!

A)我注意到如果我像这样加载类,加载的类将包含parrent类的包(我运行代码的那个:示例:jar库中的类的真实包:"com .something"&my-app-package:"com.wonderfull" - >加载的类在"com.wonderfull.com.something":)) - >重新测试:它保留原始包,就像在库中一样

B)在"最佳"情况下,我收到此错误:

无法实例化活动ComponentInfo {com.appno2/com.appno1.futureLib.LibActivity}:java.lang.ClassNotFoundException:com.appno1.futureLib.LibActivity in loader dalvik.system.PathClassLoader [/data/app/com.appno2-1 apk文件]

C)在清单中我已经放置了Activity(一个要加载的动态),如下所示:

activity android:name ="com.appno1.futureLib.LibActivity"android:label ="@ string/app_name">/activity>

所以我从标题重复提问:是否有可能从sdCard上的jar库中加载一个Activity类并实际使用它?

在"为什么你想要这个?"的情况下. - 只是古玩!+作为一个概念:在用户输入有效许可证后,可以下载app的实际代码(以jar的形式)

更新: - 此ideea适用于片段(意味着要导入的类是片段)

目前的结论: - 可能有:lame java类甚至是外部.jar中的android UI相关类(例如,在sdCard上,或者从internet..etc下载)并根据需要加载它们.哦是的:你不能以这种方式工作这个活动:(甚至可能不是服务..

更多信息#1:是否可以在运行时从Android应用程序动态加载库?

更多信息#2:http://android-developers.blogspot.ro/2011/07/custom-class-loading-in-dalvik.html

Regardin URLClassLoader:这是有效的(不涉及DalvikClassLoader - ClassNotFoundException && obviosly:仍然无法膨胀像这样加载的活动)

File file = new File("/sdcard/myLib.jar");
File tmpDir = getDir("dex", 0);
ClassLoader loader = new URLClassLoader(new URL[]{file.toURI().toURL()}, this.getClass().getClassLoader());
DexClassLoader classloader = new DexClassLoader(file.getAbsolutePath(), tmpDir.getAbsolutePath(), null, loader);
Class<Object> classref = (Class<Object>) classloader.loadClass("packageInLib.ClassName");
Object myInstance …
Run Code Online (Sandbox Code Playgroud)

android classloader dex

14
推荐指数
1
解决办法
4149
查看次数

字节集合与java中的ByteBuffer类似

我需要一个类似于Java的ByteBuffer的C#实现.感兴趣的方法 - .remaining() - 返回当前位置和限制之间的元素数量. - .array() - .clear() - .put(byte [],int,int)

我开始用MemoryStream...但是没有clear(),还有很多即兴创作此外,我在Koders上找到了ac#implementation:http://www.koders.com/csharp/fid2F8CB1B540E646746D3ADCB2B0AC867A0A8DCB06.aspx? s=socket#L2 ..我会使用..但也许你们知道更好的东西

c# java bytebuffer

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

C#泛型而不是疯了

public <T extends java.util.EventListener> T[] getListeners(final Class<T> listenerClass) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

上述java泛型的等效c#泛型表示法是什么?

参数listenerClass将是一个类型而不是一个对象.但是对象T必须属于特定的层次结构.

c# java generics

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

Android字符串资源 - 需要包含'%'字符

那么如何在字符串资源中包含'%'字符?

有效

<string name="my_string">Total discount boundary:\nmin=%1$s nmax=%2$s</string>
Run Code Online (Sandbox Code Playgroud)

无效

<string name="my_string">Total discount boundary:\nmin=%1$s % nmax=%2$s %</string>
Run Code Online (Sandbox Code Playgroud)

string android

7
推荐指数
1
解决办法
2274
查看次数

C#:需要一个类似于Java的LinkedBlockingQueue的阻塞FIFO队列

需要类似java的东西LinkedBlockingQueue.

感兴趣的方法:messageQueue.poll(120000, TimeUnit.MILLISECONDS); 意思是..获取项目..如果在X单位时间你仍然没有项目...返回null

那+我必须是FIFO

一些谷歌搜索后(但还没有测试):我发现ConcurrentQueue(有FIFO行为),BlockingCollection(FiFO或没有FIFO?)

c# queue multithreading fifo blocking

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

比较字符串二进制(而不是字母数字)

如何比较二进制字符串(不是字母数字)?

\n\n

洪流规格:

\n\n
\n

键必须是字符串并按排序顺序显示(按原始字符串排序,而不是字母数字排序)。应使用二进制比较来比较字符串,而不是特定于区域性的“自然”比较。

\n
\n\n

所以我需要按键对字典进行排序...但我没有得到这个规范..\n解释..有人吗?

\n\n

更新:根据:http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch5lingsort.htm

\n\n
\n

使用二元排序

\n\n

对字符数据进行排序的一种方法是基于字符编码方案定义的字符的数值。这称为二元排序。二进制排序是最快的排序类型。它们为英语字母表生成合理的结果,因为 ASCII 和 EBCDIC 标准以升序数值定义字母 A 到 Z。

\n\n

注意:在 ASCII 标准中,所有大写字母都出现在任何小写字母之前。在 EBCDIC 标准中,情况正好相反:所有小写字母都出现在任何大写字母之前。

\n\n

当存在其他语言中使用的字符时,二进制排序通常不会产生合理的结果。例如,当\n \xc3\x84 的数值高于字符编码方案中的 B 时,升序\n ORDER BY 查询将返回字符串 ABC、ABZ、BCD、\xc3\x84BC。\n 二进制排序对于使用表意字符的亚洲语言来说通常没有语言意义。

\n
\n\n

所以基本上英语的结果与字母顺序排序相同..\n很好..

\n

sorting string compare

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

检查是否有使用操作字符串注册的BroadCastReceiver

所以我需要一种方法来确定是否有针对特定操作字符串注册的broadCastReceiver.

因此,为了检查意图是否可用,我们有方法(来自 http://www.vogella.com/articles/AndroidIntent/article.html)

public boolean isIntentAvailable(Context context, String action) {
    final PackageManager packageManager = context.getPackageManager();
    final Intent intent = new Intent(action);
    List<ResolveInfo> resolveInfo =
            packageManager.queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
   if (resolveInfo.size() > 0) {
        return true;
    }
   return false;
}
Run Code Online (Sandbox Code Playgroud)

哪个有效,但从我的测试中看起来只是注册活动的意图.我有一个broadCastReceiver注册了特定的操作字符串.它从未将其视为已注册.但如果我发射广播.广播反应.因此,在这种情况下,方法不起作用.

想法?

android broadcastreceiver android-intent

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

Android和剪切(删除)位图的形状

如何从位图中剪切(删除)一个部分?我希望删除那个部分/形状..在部分的位置留下透明..说形状是cercle或square ..

在此输入图像描述

在此输入图像描述

graphics android bitmap

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