小编mar*_*bse的帖子

如何创建不同的pendingintent使filterEquals()返回false?

我正在使用AlarmManager设置重复意图,但它已经造成一些小问题,所以希望任何人都可以提供帮助.

摘要

有2个未决意图.一个运行在1000,另一个运行在每天2000.每个包含来自数据库的行id以用于识别目的.代码看起来像这样:

Intent i = new Intent(mContext, ScheduleReceiver.class);
i.putExtra(RuleDBAdapter.KEY_ROWID, (int)taskId);
PendingIntent pi =PendingIntent.getBroadcast(...);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi); 
Run Code Online (Sandbox Code Playgroud)

删除:

问题是我们需要删除其中一个.删除待处理意图的正确方法是设置相同的意图,然后从AlarmManager调用cancel.

Android文档:

public void cancel(PendingIntent operation)
删除具有匹配Intent的所有警报.任何类型的警报,其Intent与此匹配的警报(由filterEquals(Intent)定义)将被取消.

public boolean filterEquals(Intent other)
确定两个意图是否相同以进行意图解析(过滤).也就是说,如果他们的行为,数据,类型,类别和类别是相同的.这不会比较意图中包含的任何额外数据.

所以在上面的例子中,如果我做出相同的意图然后取消,上述两个意图将被取消,因为它们来自同一个类/相同的动作等(除了"额外"数据是rowId但filterEquals不关心额外数据).

这有什么解决方法吗?

android repeat alarmmanager android-pendingintent

20
推荐指数
1
解决办法
7671
查看次数

Java如何在抽象类中选择覆盖方法?

假设我们有一个基类:

public abstract class BaseFragment extends Fragment {
    ...
    protected abstract boolean postExec();
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后从中派生出其他类(例如Fragment_Movie,Fragment_Weather ......)

public class Fragment_Music extends BaseFragment{
    @Override
    protected boolean postExec() {
        return false;
    } 
}
Run Code Online (Sandbox Code Playgroud)

但是,在向基类添加新方法时:

public abstract class BaseFragment extends Fragment {
    ...
    protected abstract boolean postExec();
    protected abstract boolean parseFileUrls();
    ...
}
Run Code Online (Sandbox Code Playgroud)

Eclipse立即显示错误,要求在已派生的类中实现此新方法.

是否在基类中添加"默认"抽象方法,以便即使我们不在派生类中实现它也不显示错误?(因为每次基类附加新方法时都需要花费大量时间来修复每个派生类.)

java methods class abstract

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

如何从Android .apk assets文件夹解压缩LUA脚本?

我正在尝试对Android游戏进行逆向工程,以找出其计算背后的逻辑.

提取.apk文件后,/ assets/lua文件夹中有lua脚本,所有文件都有.lua扩展名.但是,如果使用Text/HEX编辑器打开,则它们不是人类可读的.

例如:这个文件

所有文件的内容以"droi.lua"签名结尾,让我觉得这不是LUA脚本,而是Android的某种压缩LUA脚本.而且Android有一种压缩文件用于发布的机制.

有谁之前经历过这个吗?有没有办法让这种文件可读?

是否有任何方法/程序可以解压缩从.apk资产中提取的文件(例如png,lua等)?

compression lua android decompiling reverse-engineering

12
推荐指数
1
解决办法
1769
查看次数

如何在Visio 2007中使用替代组合片段?

我一直在寻找如何在Visio 2007中使用替代组合片段来获取UML序列图,但似乎没有创建这个if-then-else语句的表示法.

(如下面的视觉范例:http://knowhow.visual-paradigm.com/?p = 788)

Visio 2007是否支持替代方案?(否则,我们如何在Visio中创建if-then-else块?)

非常感谢你

diagram uml visio sequence

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

Python - 如何读取/解析csv之类的行?

我做了一些搜索,但大多数答案是关于阅读一个完整的csv文件,这些都不是我面临的问题.

我正在尝试使用urllib2从net读取文件:

request = urllib2.Request('http://.../tv.txt')
response = urllib2.urlopen(request)
lines = response.readlines()
for line in lines:
    ...
Run Code Online (Sandbox Code Playgroud)

"line"格式如下所示:

"ABC", "XYZ,MNO", "KLM"
"ABC", "MN"
"ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"
Run Code Online (Sandbox Code Playgroud)

如上所示,这些线实际上不是CSV线.列数不断变化.

有没有办法将每一行拆分成一个列表?欲望的结果应该是:

["ABC", "XYZ,MNO", "KLM"]
["ABC", "MN"]
["ABC", "123", "10", "OPPA GANGNAM STYLE", "LADY"]
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用line.split(",")但它无法正确拆分,因为每对双引号内都有逗号.

如果你知道如何,请帮助我.非常感谢你.

干杯,

PHP的Python,Java的的MySQL新手.

python csv parsing line

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

发送多个请求时如何将结果与请求匹配?

总结

作为标题,Guzzle允许一次发送多个请求以节省时间,如文档中所示.

$responses = $client->send(array(
    $requestObj1,
    $requestObj2,
    ...
));

(given that each request object is an instance of
Guzzle\Http\Message\EntityEnclosingRequestInterface)
Run Code Online (Sandbox Code Playgroud)

当响应返回时,为了确定哪个响应是针对哪个请求,我们可以遍历每个请求并获得响应(仅在执行上述命令后才可用):

$response1 = $requestObj1->getResponse();
$response2 = $requestObj2->getResponse();
...
Run Code Online (Sandbox Code Playgroud)

B.问题

如果请求对象包含相同的数据.无法识别原始请求.

假设我们有以下场景,我们需要在距离服务器上创建2篇文章:A和B:something.com/articles/create.json

每个请求都有相同的POST数据:

subject: This is a test article
Run Code Online (Sandbox Code Playgroud)

创建之后,Guzzle回复2位置回来:

something.com/articles/223.json
something.com/articles/245.json
Run Code Online (Sandbox Code Playgroud)

使用上面的方法来链接对其请求的响应,我们仍然不知道哪个响应是针对哪篇文章的,因为请求对象完全相同.

因此,在我的数据库中,我无法写下结果:

article A -> Location: 245.json
article B -> Location: 223.json
Run Code Online (Sandbox Code Playgroud)

因为它可以是另一种方式:

article A -> Location: 223.json
article B -> Location: 245.json
Run Code Online (Sandbox Code Playgroud)

解决方案是在POST请求中添加一些额外的参数,例如

subject: This is a test article
record: A
Run Code Online (Sandbox Code Playgroud)

但是,距离服务器将返回错误并且不会创建文章,因为它不理解键"记录".距离服务器是第三方服务器,我不能改变它的工作方式.

另一个适当的解决方案是在请求对象上设置一些特定的id/tag,这样我们就可以在之后识别它.但是,我查看了文档,但没有方法可以唯一地标识请求

$request->setID("id1")

or …
Run Code Online (Sandbox Code Playgroud)

guzzle

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