小编Mr_*_*s_D的帖子

一旦活动结束,就会调用onStartCommand服务

当我点击播放按钮播放歌曲并将歌曲mp3与它捆绑在一起并在onStartCommand中接收时,我开始服务.问题是当我启动服务的活动结束时,我的服务再次调用onStartCommand.当它接收该捆绑时它不存在,因为这次活动没有启动它.因此,我在准备媒体播放器时遇到了非法的例外情况.我没有约束我的服务.

为什么在我的活动结束时会调用onStartCommand?

启动服务:

Intent i = new Intent(SongList.this,MyService.class);
i.putExtra("songURL", user.songurlz);
i.putExtra("songNAME", songplay_name);
startService(i);
Run Code Online (Sandbox Code Playgroud)

服务类:

public class MyService extends Service {

    static MediaPlayer mediaPlayer;
    static int pauseplay;
    static NotificationManager notificationManagerPlay;
    static CharSequence tickerText;
    static Notification notification4;//Notification variable(for song playing)
    TelephonyManager telephonyManager;
    PhoneStateListener listener;
    static Notification notification;
    static NotificationManager mNotificationManager;
    String songurl;
    String songname;

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mediaPlayer = new MediaPlayer();
        pauseplay = 1;
        MainMenu.serviceRunning …
Run Code Online (Sandbox Code Playgroud)

android

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

在庞大的项目环境中使用Web片段(Servlet API 3.0)

我们最近迁移到Servlet API 3.0.由于我们正在开发一个有时需要进行一些更改web.xml的框架,因此基于我们框架的项目需要web.xml在框架发生变化时更新它们.

Servlet API 3.0引入了新的Web碎片,使这种行为更加松散耦合和动态.我创建了一个web-fragment.xml并从那里的web.xml中移动所有东西.因此,项目现在只需要定义以下内容web.xml和它们自己的附加声明.

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
   version="3.0"
   metadata-complete="false"
   xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>
Run Code Online (Sandbox Code Playgroud)

我们必须使用metadata-complete="false"在JAR中启用Fragment搜索(我们的框架具有web-fragment.xmlin META-INF/.

由于我们对其他框架和库(大约80-90)有许多依赖关系,并且metadata-complete="false"还触发搜索注释,因此搜索所有库需要12秒才能达到不可接受的时间.

这个机制很有效,我喜欢这样一个事实,即我们与框架的联系更加紧密,但启动时间是致命的!此外,我们必须增加Tomcat的可用内存,-Xms256m -Xmx512m以便-Xms512m -Xmx1024m在没有得到它的情况下启动它java.lang.OutOfMemoryError: Java heap space(由Tomcat的低效实现的注释处理器引起(大约有50.000个类被缓存)).


我知道我们可以禁用库中的注释搜索,但由于我们主要使用没有metadata-complete="true"标志的第三方,因此这也不是一个选项.

我们可以做任何事情来禁用搜索注释吗?或者我们可以强制Servlet容器只搜索声明的库中的web-fragment.xml

我真的想使用新的网络片段功能,但随着启动时间和内存的增加,这是不可能的.

java tomcat servlet-3.0

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

git快速导入流的合并语义是什么?

我编写并维护了一个名为reposurgeon的开源工具,它编辑版本控制存储库历史记录,可用于在VCS之间移动项目历史记录.最近我发送完全支持读取Subversion转储文件和repos.但是有一件事reposurgeon还没有做得很好,那就是通过复制到git风格的DAG合并来翻译Subversion分支合并.

为了使这一部分正确,我需要比git更快地理解git快速导入流中的合并提交的语义.我的问题是关于合并提交后应该看到哪个版本的内容.

当然,附加合并提交的文件修改使其内容可见.我的问题是关于提交没有触及的路径.

  1. 如果路径仅在合并的祖先只有一个提交链上有内容,我认为内容应该是可见的.那是对的吗?

  2. 如果路径在合并中具有多个祖先的提交链中的内容,那么哪个版本可见?

  3. 如果沿着合并的某些路径删除文件,那么什么规则会预测合并修订中何时删除它?

git git-fast-import

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

git line endings:renormalize似乎没有检查右边的结尾

我决定通过.gitattributes文件详细设置我的行结束正确的方式- 例如这里 - 所以我将core.autocrlf设置为false并创建并提交了一个.gitattributes文件:

*.java text eol=native
*.jsp text eol=native
*.css text eol=native
*.html text eol=native
*.js text eol=native
*.xml text eol=native
*.sql text eol=native
*.MF text eol=native

# git files
*.gitignore text eol=native
*.gitattributes text eol=native

#eclipse files
*.classpath text eol=native
*.project text eol=native
*.prefs text eol=native
*.properties text eol=native
Run Code Online (Sandbox Code Playgroud)

然后我按照这里的建议发布git rm --cached -r .然后git reset --hard(也尝试过git checkout HEAD).现在所有文件都有LF行结尾.不应该是CRLF?我错过了什么?我在Windows 7上.git version 1.8.0.msysgit.0

谢谢

git line-endings gitattributes

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

当用户只想打印使用情况时,如何避免所需选项的ParserException?

所以我有一个Options实例,其中包括其他选项(注意isRequired()):

        options.addOption(OptionBuilder
                .withLongOpt("seq1")
                .withDescription("REQUIRED : blah blah")
                .hasArg().isRequired().create());
        options.addOption(OptionBuilder
                .withLongOpt("seq2")
                .withDescription("REQUIRED : blih blih")
                .hasArg().isRequired().create());
        options.addOption(new Option("?", "help", false,
                "print this message and exit"));
Run Code Online (Sandbox Code Playgroud)

当我调用parser.parse(args)抛出异常时,如果seq1seq2不存在 - 但我希望它打印我的消息并且没有异常抛出 - 如何去做?这line.hasOption("help")自然会引入NPE :

CommandLine line = null;
try {
    CommandLineParser parser = new GnuParser();
    // parse the command line arguments
    line = parser.parse(options, args);
} catch (ParseException e) {
    if (line.hasOption("help")) { //NPE
        usage(0);
    }
    System.err.println("Parsing failed.  Reason: " + e.getMessage()); …
Run Code Online (Sandbox Code Playgroud)

java apache-commons-cli

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

JPA - 插入连接表的正确方法(带有额外的列)

我设法为我的电影插入工作人员 - 现在我想以正确的方式做到这一点.实体(缩写):

@Entity
@Table(name = "movies")
public class Movie implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int idmovie;
    // bi-directional many-to-one association to MoviesHasCrew
    @OneToMany(mappedBy = "movy", cascade = CascadeType.PERSIST)
    private List<MoviesHasCrew> moviesHasCrews;
}

@Entity
@Table(name = "movies_has_crew")
public class MoviesHasCrew implements Serializable {
    @EmbeddedId
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private MoviesHasCrewPK id;
    // bi-directional many-to-one association to Crew
    @ManyToOne
    @JoinColumn(name = "crew_idcrew", columnDefinition = "idcrew")
    @MapsId("crewIdcrew")
    private Crew crew;
    // bi-directional many-to-one association to Movy
    @ManyToOne
    @JoinColumn(name = "movies_idmovie") …
Run Code Online (Sandbox Code Playgroud)

jpa entitymanager eclipselink jpa-2.0

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

撤消"git filter-branch ... - --all"?在一个命令?

我开始乱搞git filter-branch.--all选项重写所有分支和标记.凉. git filter-branch创建它覆盖refs/original的所有引用的备份.很酷.现在我想把我所有的实验都filter-branch吹走.

有没有一种简单的方法来完全撤消效果git filter-branch <whatever filter> -- --all?即将所有重写的分支一次性恢复到原始状态?

如果没有预先存在的方式,应该有.如果没有预先存在的方式,是否有人会有一个简短的脚本来执行此操作?

显然有一些解决方法.我可以手动恢复它,一次一个分支,就像在这个问题中一样.或者我可以直接核对并重新克隆.要么在一个包含许多分支/标签的回购中快速繁琐,要么(比如说)被分成更小的回购.

git git-filter-branch

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

一个 KEY 的 Redis 锁定

我想在更新时锁定特定键。尝试了下面的示例代码。

import redis

import time

conn = redis.StrictRedis(host='localhost', port=6379, db=0)

print ("previous Connected Key value is :" + conn.get('connected'))

print ("previous Operational Key value is :" + conn.get('operational'))

have_lock = False
my_lock = redis.Redis().lock("my_key")

try:

    have_lock = my_lock.acquire(blocking=False)
    #have_lock = my_lock.acquire(timeout=5)
    if have_lock:
        print("Got lock. Doing some stuff...")
        time.sleep(15)
        conn.set('connected', 'false')
        conn.set('operational', 'false')
    else:
        print("Did not acquire lock.")

finally:

    if have_lock:
        my_lock.release()
print ("After Connected Key value is :" + conn.get('connected'))

print ('After Operational Key value is :' + conn.get('operational')) …
Run Code Online (Sandbox Code Playgroud)

python redis

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

Tensorflow数据集API中的过采样功能

我想问一下,当前的数据集API是否允许实现过采样算法?我处理高度不平衡的阶级问题.我当时认为在数据集解析过程中对特定类进行过度采样会很好,即在线生成.我已经看到了rejection_resample函数的实现,但是这会删除样本而不是复制它们,并且它减慢了批处理生成(当目标分布与初始分布大不相同时).我想要实现的是:举一个例子,看看它的类概率决定是否复制它.然后调用dataset.shuffle(...) dataset.batch(...)并获取迭代器.最好的(在我看来)方法是对低概率类进行过采样,并对最可能的类进行子采样.我想在网上做,因为它更灵活.

python sampling tensorflow tensorflow-datasets

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

在android设置中防止"匹配的活动可能不存在"

Settings类中的大多数Activity Actions(用于启动各种Settings活动)都带有警告:

在某些情况下,匹配的活动可能不存在,因此请确保您不会受到此类保护.

那我该如何防范呢?

try {
    final Intent i = new Intent(Settings. ACTION_WIRELESS_SETTINGS); // say
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // not sure if needed
    startActivity(i);
} catch (Exception e) { // what should I catch here 
    // I would hate to catch Throwable, but should I ?
}
Run Code Online (Sandbox Code Playgroud)

如果我正确读取了这个,例如抛出了运行时异常(NPE).我希望能够使用更具体的东西ActivityNotFoundException- 但这样就够了吗?

android android-intent android-activity android-settings

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