标签: background-process

Android:如何完全杀死作为后台进程单独运行的服务?

我有一个应用程序,它有一个Activity,用作常规GUI和一个服务.我的活动有两个按钮.一个按钮停止进程,一个按钮终止进程.我分别使用这些方法来启动和停止我的进程:

Intent i = null;
Button start;
Button stop;

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    i = new Intent(this, Service.class);
    start = (Button) findViewbyId(R.id.start_button);
    stop = (Button) findViewById(R.id.stop_button);

    start.setOnClickListener(new OnClickListener(){

        public void onClick(){
            startService(i);
        }
    }
    stop.setOnClickListener(new OnClickListener(){

        public void onClick(){
            stopService(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此服务不受actvivty或app的约束.我在Manifest中配置了这样的服务:

<service
    android:name="com.example.mypackage.Service"
    android:process=":remote"> 
    <intent-filter>
        <action
            android:name="com.example.mypackage.Service" />
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

当我启动服务时,它独立运行在其他任何东西上.这意味着,当我启动服务和onDestroy()应用程序时,服务仍在运行.我可以看到它仍在运行,因为通过adb,我运行ps命令,它说它是.

问题是我打电话的时候stopService(intent).当我stopService(intent)从活动方面调用时,它将运行onDestroy()服务中设置的代码行,但是当我运行psadb,它表示它仍在运行.

我希望能够完全破坏服务.我不确定服务是如何运作的,所以请不要犹豫,采取补救措施.我不确定它是否与我在服务中所做的事情有关.谢谢!

编辑: 当我启动服务时,我使用onStartCommand()并在那里运行一些代码.我也回来START_STICKYonStartCommand() …

service android background-process

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

从背景功能打印输出后如何返回bash提示?

从打印在后台的函数打印输出后,如何自动返回到bash提示符?

例如,当我在bash shell中运行以下脚本时:

fn(){
        sleep 10
        echo "Done"
        exit
}
fn &

运行脚本后,它会立即返回我的提示.10秒后,它会打印"完成",然后在新行上显示一个闪烁的光标:

$ Done
?

脚本不再运行了,但是在我按下之前我没有收到提示Return.

打印"完成"后有没有办法强制返回bash提示符?

一个相关的问题是:是否有办法让后台任务通知终端打印新提示?但是,这个问题询问了一个背景计划.提供有答案适用于程序发送到后台,但似乎并没有为工作函数发送到后台(在我提供的例子).

澄清:我希望保存上面的整个代码片段(例如,as myscript.sh),然后将其作为前台脚本运行(例如,as bash myscript.sh).

编辑:以上当然只是一个MWE.这个问题的背景是:

  1. 用户运行脚本
  2. 脚本提交PBS作业,开始在后台拖尾输出文件,然后调用 fn &
  3. 用户得到提示,可能会开始做其他事情.
  4. 作业开始运行时,作业输出显示在用户终端上
  5. fn监视队列并tail在作业完成时终止.
  6. 用户抱怨在完成后没有得到快速回复(即必须按下Enter).

这里有一些不那么简单的代码:

watch_queue(){
    until [  `qstat | grep $job | wc -l` -lt 1 ]; do
        sleep 2
    done
    kill -9 $pid
    tput setaf 7
    tput setab 0
    echo "Hit ENTER to return …

bash shell background-process pbs torque

10
推荐指数
2
解决办法
6104
查看次数

主脚本停止时后台进程的参数错误无效

我有这个代码通过运行后台进程来获取推文.以下脚本使用subprocess.Popen函数从主脚本运行.这样主脚本将在调用后台进程脚本后停止执行.

def start_listner(unique_id, keyword, limit=200):
    class CustomStreamListener(tweepy.StreamListener):

        def __init__(self, api):
            logger.info('runnning')
            self.api = api
            super(tweepy.StreamListener, self).__init__()

            #setup rabbitMQ Connection


        def on_status(self, status):
            print status.text.encode('utf-8'), "\n"
            #queue the tweet and writes the tweet to the log

        def on_error(self, status_code):
          #some code to not kill the stream

        def on_timeout(self):
          #some code to not kill the stream

    sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
    try:
        logger.info('tracking started')
        logger.info(keyword)
        logger.info(type(keyword))
        kw = keyword
        sapi.filter(track=[kw])  # keeps listening to the streaming api
    except Exception, err:
        logger.info(kw) …
Run Code Online (Sandbox Code Playgroud)

python daemon background-process tweepy python-2.7

10
推荐指数
1
解决办法
565
查看次数

暂停在console2中运行的bash中的进程

在其他终端,我会按下Ctrl+z暂停一个应用程序,然后经常发出bg将其发送到后台.

在console2 Ctrl+z中什么都不做,可能是因为组合键在Windows中具有不同的含义.但有没有办法达到同样的效果,除了'过程&'?

(我知道我应该使用&并且它有效,但有时候我会设置shell,启动一个编辑器,开始编辑,然后返回到控制台,发现我忘记了&,我不能使用shell.它让我很烦我然后必须打开一个新的shell并重新设置它,或者退出编辑器,启动它&并重新设置它).

windows bash background-process console2

9
推荐指数
3
解决办法
6673
查看次数

PHP Heroku后台工作者?

我正在使用Heroku运行PHP应用程序,我需要设置与外部API通信并写入我的数据库的后台工作程序,Heroku有很多关于为Ruby设置工作程序而不是PHP的信息.

使用PHP在Heroku上这很容易实现吗?

我从来没有解决启动后台进程的问题,我似乎找不到任何详细介绍它的文档......

php heroku background-process

9
推荐指数
1
解决办法
3183
查看次数

在开发环境中使用rails服务器启动Sidekiq

我正在使用Sidekiq进行一些后台处理.

目前我所做的是:

bundle exec rails s 一个终端开始,然后在另一个终端上启动bundle exec sidekiq,以便sidekiq自己启动并查找要处理的作业.

我想要的是:

一旦我开始bundle exec rails s它也应该启动sidekiq bundle exec sidekiq.我怎样才能将它集成到开发环境中?

ruby background-process ruby-on-rails-3.1 sidekiq

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

如何处理后台linux任务的输出

我有一个不断回应信息的任务.

例如,如果你执行git clone并且想要将该任务发送到后台(通过使用&符号)

git clone https://github.com/mrdoob/three.js.git &
Run Code Online (Sandbox Code Playgroud)

然后git clone操作不断刷新屏幕,使用git clone进程的新百分比,即:

Receiving objects:  47% (22332/47018), 92.53 MiB | 480 KiB/s   1410/47018), 7.18 MiB | 185 KiB/s
Receiving objects:  53% (24937/47018), 99.40 MiB | 425 KiB/s   1410/47018), 7.18 MiB | 185 KiB/s 
Run Code Online (Sandbox Code Playgroud)

所以我不能继续在前台做其他操作,因为这些更新阻止我看到我想写的东西.

你能告诉我们如何有效地将这样一个冗长的任务发送到后台吗?

非常感谢!

linux bash command-line background-process

9
推荐指数
1
解决办法
5105
查看次数

如何在后台启动流程?

我似乎无法在Google或StackOverflow上找到答案.

如何在后台启动进程(在活动窗口后面)?就像,当进程启动时,它不会中断用户正在使用的当前应用程序.

该过程不会在当前应用程序前弹出,它只会启动.

这就是我正在使用的:

Process.Start(Chrome.exe);
Run Code Online (Sandbox Code Playgroud)

当应用程序启动时,Chrome会在我的应用程序前弹出.如何让它在后台启动?

我也尝试过:

psi = new ProcessStartInfo ("Chrome.exe");
psi.UseShellExecute = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(psi);
Run Code Online (Sandbox Code Playgroud)

但是与前一个完全没有区别.

谢谢.

.net c# windows background-process

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

3分钟后iOS 9位置更新后台任务

我一直在深入研究这个使用基本计时器检查位置更新的代码.然后我将它发送到服务器的lat/lng.

http://mobileoop.com/background-location-update-programming-for-ios-7 https://github.com/voyage11/Location

当插入并通过XCode连接时,它运行良好,但是当我拔下并移动设备时,操作系统似乎总是在3分钟后完全杀死后台线程.因此,如果我将计时器设置为每30秒运行一次,我将获得~6次更新,直到我将应用程序带到前台.

我已经读过最大后台执行时间是3分钟,但是我看到这个代码在1分钟后重置了后台任务,所以我不知道为什么我会看到这个.

必须有一些解决方法.我能在这做什么吗?

编辑:这帮助我:在iOS9中的CLLocationManager中的allowsBackgroundLocationUpdates

xcode background-process cllocationmanager ios

9
推荐指数
1
解决办法
3716
查看次数

如何停止后台下载exe

根据附加的屏幕截图 BackgroundDownload.exe 在后台运行并消耗大量互联网数据。怎样才能阻止? 在此处输入图片说明

background-process windows-10 visual-studio-2019

9
推荐指数
4
解决办法
9434
查看次数