Tag: 服务

使用Process.Start()从Windows服务中以不同的用户身份启动进程

我想定期从一个Windows服务指定的用户帐户运行一个任意的.NET EXE文件。 到目前为止,我已经得到了我的Windows服务与逻辑运行,以确定目标进程是什么,以及什么时候运行它。 目标进程以下列方式启动: Windows服务使用“pipe理员”凭据启动。 当时间到了,一个中间.NET进程被执行,参数详细说明哪个进程应该被启动(文件名,用户名,域名,密码)。 此进程创build一个新的System.Diagnostics.Process,将一个ProcessStartInfo对象与传递给它的参数进行关联,然后调用该进程对象上的Start()。 第一次发生这种情况时, 目标进程正常执行,然后正常closures 。 然而,随后的每一次,只要目标进程开始,它就会抛出错误“Application failed to initalize properly(0xc0000142)”。 重新启动Windows服务将允许进程再次成功运行(对于第一次执行)。 自然,目标是每次成功执行目标进程。 关于上面的步骤2:以不同的用户身份运行进程.NET调用win32函数CreateProcessWithLogonW。 此function需要一个窗口句柄才能login指定的用户。由于Windows服务未以交互模式运行,因此它没有窗口句柄。 这个中间过程解决了这个问题,因为它有一个窗口句柄可以传递给目标进程。 请不要使用psexec或Windows任务计划程序的build议。 我已经接受了我的生活,包括以上述方式解决问题。

在Android中使用ResultReceiver

从根本上说,我想build立一个IntentService的Activity的callback。 我的问题和这里回答的非常相似: Restful API服务 但是,在答案代码中,活动代码被视为实施ResultReceiver。 除非我失去了一些东西,ResultReceiver实际上是一个类,所以它不能执行这个实现。 所以基本上,我问什么是将ResultReceiver连接到该服务的正确方法。 在这方面,我对Handler和ResultReceiver的概念感到困惑。 任何工作示例代码将不胜感激。

更有效的方式从服务更新UI比意图?

我目前在Android中有一个Service,它是一个示例VOIP客户端,所以它侦听出SIP消息,如果它接收到一个,它将启动一个带UI组件的Activity屏幕。 然后,以下SIP消息确定活动在屏幕上显示的内容。 例如,如果来电将显示“应答”或“拒绝”或拨出电话,则将显示拨号屏幕。 在那一刻我使用Intents来让活动知道它应该显示什么状态。 一个例子如下: Intent i = new Intent(); i.setAction(SIPEngine.SIP_TRYING_INTENT); i.putExtra("com.net.INCOMING", true); sendBroadcast(i); Intent x = new Intent(); x.setAction(CallManager.SIP_INCOMING_CALL_INTENT); sendBroadcast(x); Log.d("INTENT SENT", "INTENT SENT INCOMING CALL AFTER PROCESSINVITE"); 因此,活动将有一个广播接收者注册这些意图,并将根据最后收到的意图切换其状态。 示例代码如下所示: SipCallListener = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(SIPEngine.SIP_RINGING_INTENT.equals(action)){ Log.d("cda ", "Got RINGING action SIPENGINE"); ringingSetup(); […]

前台服务正在被Android杀死

更新 : 我还没有find真正的解决scheme的问题。 我想到的是一种在丢失连接时自动重新连接到以前的蓝牙设备的方法。 这不是理想的,但似乎工作得很好。 我很想听到更多关于这方面的build议。 我和这个问题有很多相同的问题: 服务在保持唤醒locking的情况下被中止,并且在调用包括设备(Asus Transformer)在内的startForeground之后 ,停止服务之前的时间长度(30-45分钟),使用唤醒锁,使用startForeground(),以及在屏幕熄灭时应用程序处于打开状态时不会发生问题的事实。 我的应用程序与其他设备保持蓝牙连接,并在两者之间发送数据,所以它必须始终处于活动状态以侦听数据。 用户可以随意启动和停止服务,实际上这是我实现启动或停止服务的唯一方法。 一旦服务重新启动,与其他设备的蓝牙连接就会丢失。 根据链接问题的答案,startForeground()“减less了服务被杀死的可能性,但是并不妨碍它”。 我明白,是这样的,但是我已经看到了许多其他的应用程序没有这个问题的例子(例如塔斯克)。 我的应用程序的实用性将大大降低,无法运行服务,直到用户停止。 有什么办法可以避免这个? 我看到这在我的logcat每当服务停止: ActivityManager: No longer want com.howettl.textab (pid 32321): hidden #16 WindowManager: WIN DEATH: Window{40e2d968 com.howettl.textab/com.howettl.textab.TexTab paused=false ActivityManager: Scheduling restart of crashed service com.howettl.textab/.TexTabService in 5000ms 编辑:我也应该注意到,这似乎并没有发生在我连接到的其他设备:HTC Legend running Cyanogen 编辑:这是adb shell dumpsys activity services的输出: * ServiceRecord{40f632e8 com.howettl.textab/.TexTabService} intent={cmp=com.howettl.textab/.TexTabService} […]

组件之间的angular度共享服务不起作用

我有一个服务,我宣布我的variables。 在我的组件中,我使用这个variables来把数据放入它。 服务: @Injectable() export class DataService { public msgs = []; constructor() { } } 现在我在我的组件中使用这个variables: export class MessagesComponent implements OnInit { constructor(private dataService: DataService){} ngOnInit() { this.getData(); } getData(){ let msgs = []; if (diffr <= this.geomessage[i].range) { this.geomessage[i].dist = diffr; msgs.push(this.geomessage[i]); //console.log("this message: ", this.geomessage[i]); //DEBUG } this.dataService.msgs = msgs; } } […]

屏幕closures时如何保持我的Android服务运行?

当屏幕closures时,我的应用程序服务暂停。 我用下面的代码开始我的服务: if (mSharedPrefs.getBoolean("prefAutoUpdatesMain", false)) { Intent svc = new Intent(this, MyService.class); startService(svc); } 我怎样才能避免服务暂停? 我在MyService中要做的是从互联网上下载一些数据。 如果我了解了这个过程,我必须遵循的是: 获取wakeLock 下载数据 发布wakeLock 在下载数据方法中没有提到wakeLock,是wakeLock的应用程序,它是正确的吗? 唤醒锁默认是引用计数。 我认为这是一个更好的wakeLock没有引用计数,一定要释放它,我错了吗?

位置服务GPS强制closures

嗨,我开发一个应用程序来find最好的位置和短信到一个数字。 其工作正常与networking位置,但是当我想定位与GPS或标准类它的成为力量closures! 它如此友善地帮助我tnx。 package ir.M410.toolkit; import android.app.Service; import android.content.Intent; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.telephony.SmsManager; import android.util.Log; public class LocationFinder extends Service implements LocationListener{ double lat ,lon ; @Override public IBinder onBind(Intent arg0) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { […]

当调用stopService方法时服务不会停止

我目前有一个服务,运行良好,当我启动它,但是当我试图阻止它使用stopService方法的onDestroy方法不会被调用。 这里是我用来停止服务的代码 stop_Scan_Button =(Button)findViewById(R.id.stopScanButton); stop_Scan_Button.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Log.d("DEBUGSERVICE", "Stop Button pressed"); Intent service = new Intent(CiceroEngine. CICERO_SERVICE); releaseBind(); Log.d("Stop_Scan_Button", "Service: " + service.toString()); stopService(service); Log.d("Stop_Scan_Button", "Service should stop! "); } }); 我正确地认为,当使用stopService时,它调用服务的onDestroy方法? 当我按停止扫描button时,我的服务中的onDestroy()方法不会被调用。 还有什么我错过了,我应该停止服务? 编辑:添加onServiceConnected()得到调用时stopService运行,而不是onServiceDisconnected() ,为什么会发生这种情况? 编辑: 添加更多信息关于绑定 我在onCreate()方法中调用bindService,然后使用releaseBind()方法解除绑定服务。 这是该方法的代码: public void releaseBind(){ unbindService(this); } 所以我认为解绑不是我的问题?

从Android中的服务发送通知

我有一个服务正在运行,并想发送通知。 太糟糕了,通知对象需要一个上下文,就像一个Activity,而不是一个服务。 你知道有什么方法可以通过吗? 我试图为每个通知bu创build一个Activity,看起来很丑陋,我找不到一个没有任何视图的Activity。

servstack REST API和CORS

任何人都知道是否可以使用servicestack框架来创buildCORS REST服务? 我一直对我对WCF REST的东西抱怨好几天 – 完全没用。 谢谢