Tag: android service

android服务START_STICKY START_NOT_STICKY

我需要保持我的服务始终在后台运行。 并使用“startService()”函数启动我的服务。 我不希望重新启动任何应用程序状态的服务。 这是我的观察。 START_STICKY>如果应用程序启动,则服务正在重新启动。 当应用程序关闭时,服务也会重新启动。 应用程序关闭后,START_NOT_STICK>服务无效。 我需要一个始终运行的服务,它将在应用程序启动时接收广播。 服务状态不依赖于应用程序是否正在运行。 你能帮助我吗 ? 谢谢。

Handler.handleMessage未在测试中调用,但在应用程序中调用

我有一个在单独进程中运行的服务。 该服务在onCreate()方法中生成一个新线程。 该线程将消息发送回服务。 如果我手动启动应用程序一切正常 – Handler在我的服务中收到消息。 但在我的测试中, handleMessage()方法永远不会被调用。 如何修复我的测试以使handleMessage()方法有效? 谢谢! 服务: public class MyService extends Service { private ServiceHandler mHandler; private final int MSG_HELLO_WORLD = 1; private final String TAG = getClass().getSimpleName(); @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. return null; } @Override public void onCreate() { […]

Android通过名称以编程方式连接到Open WiFi – 这是最佳解决方案?

我一直试图使用两种方法按名称以编程方式连接到开放的wifi(连接门户)。 我使用op1,但它只能使用80%的次数。 _____________________________________________________ op1: public static void connectToWifi(Context context, String networkSSID) { WifiConfiguration conf = new WifiConfiguration(); conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); wifiManager.addNetwork(conf); List list = wifiManager.getConfiguredNetworks(); for (WifiConfiguration i : list) { Log.d(TAG + ” |connectToWifi()”, “i.SSID=> ” + i.SSID); if (i.SSID != null && i.SSID.equals(“\”” + networkSSID + “\””)) { wifiManager.disconnect(); wifiManager.enableNetwork(i.networkId, […]

Android – 无法通过服务接收我的活动中的本地广播

我有我的主要活动,即启动服务(位置服务),我希望每次找到新位置时,该服务都会广播新位置。 由于日志我知道服务正在运行,我每隔几秒就有新的位置,但我从来没有得到广播。 MainActivity.java public class MainActivity extends Activity { private static final String TAG = “mainActivity”; private CMBroadcastReceiver mMessageReceiver = new CMBroadcastReceiver(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { // Start Service startService(new Intent(this, LocationService.class)); super.onCreate(savedInstanceState); } @Override public void onResume() { LocalBroadcastManager.getInstance(this).registerReceiver( mMessageReceiver, new IntentFilter(CMBroadcastReceiver.RECEIVE_LOCATION_UPDATE)); super.onResume(); […]

运行Camera Service时takePicture失败

我试图在后台运行相机服务,在服务启动后不久我得到一个错误takePicture failed 。 我是Android的新手,也是Stackoverflow的新手,也不是一个优秀的程序员。 我已添加了正确的权限,并且该服务也已在清单文件中声明。 package com.example.nevii.camera; import android.app.Service; import android.content.Intent; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.IBinder; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.Toast; import java.io.IOException; public class CameraService extends Service { //Camera variables //a surface holder private SurfaceHolder sHolder; //a variable to control the camera private Camera mCamera; //the camera parameters private Parameters parameters; private […]

从服务到活动的线程获取处理程序

情况: activity绑定到已启动的前台服务。 服务将本地活页夹分发给活动。 activity通过getService()调用获取对服务的引用。 activity希望使用消息直接与服务中运行的线程进行通信。 它从活动中调用mService.getThreadHandler()方法。 问题: 如何从当前运行的线程中获取Handler到活动活动中,以便我可以将消息直接发送到线程messagequeue? 我不知道在服务中使用什么信使,我想直接与活动方面的服务中的线程进行通信。 编辑:活动通过调用以下内容获取服务中线程本身的处理程序: 活动代码: Handler mServiceThreadHandler; ServiceConnection mServiceConnection; public void onStart() { if (!bindService(new Intent(this, MainService.class), mServiceConnection, Context.BIND_AUTO_CREATE)) { Log.e(TAG, “Client did not bind to Service!”); } super.onStart(); } public class MyLocalServiceConnection implements ServiceConnection { @Override public void onServiceConnected(ComponentName name, IBinder service) { LocalBinder binder = (LocalBinder) service; […]

如何停止我的服务?

另请参阅编辑2(下面) 我扩展了NotificationListenerService并实现了它的几个方法,包括onDestroy()方法(但不是onBind()或onStartCommand()方法,因为我不需要它们,据我所知)。 但是当我调用selfStop()时,没有调用onDestroy() 。 我知道有关于调用selfStop()其他链接,但我没有找到任何解决我的问题的方法。 我的服务是由系统使用android-manifest的以下代码启动的: 同样,当我尝试在onCreate()方法中调用stopSelf()时(如果满足某些条件),不调用onDestroy()方法……服务不会被销毁。 它一直在使用RAM(我知道它正在运行,因为我可以在设置 – >应用程序 – >运行(在我的智能手机上)下看到它) 有谁知道为什么stopSelf()可能没有被执行/运行? 我是否必须在onBind()方法中执行某些操作(例如,更改返回的常量)? 是否甚至可以停止extends NotificationListenerService service ,以便它在系统再次调用之前不运行? 我必须在调用stopSelf()之前调用stopSelf()吗? 如果是,那么使用哪个Context和ServiceConnection ? 编辑1 这是我的代码: public class Core extends NotificationListenerService { @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.i(“abc”, “onCreateService”); prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); //check main switch state: check = prefs.getBoolean(“mainswitch”, true); Toast.makeText(Core.this, Boolean.toString(check), […]

java启动一个后台线程接连完成

我看到了这个问题: 如何在完成另一个线程后运行一个线程 ,但是它的答案对我来说不合适。 我有这样的Android代码: public void startTask(Runnable r) { running = true; Log.i(tag, “———–start.Runnable———–“); Thread first = new Thread(r); first.start(); Thread second = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub running = false; } }); } 第一个Thread作为param Runnable对象,具有一些我在后台服务中处理的硬操作。 所以,当我调用method: startTask()时我设置了running = true; 防止双重执行任务。 但是,我也需要在第一个线程完成第二个线程后立即设置running = false; 使其他操作能够执行。 如何等待第一个线程的完整性,不要冻结主线程? […]

在服务类中使用AsyncTask?

我必须将数据上传到服务器。 我正在使用与我的应用程序在同一进程上运行的服务。 我应该使用单独的线程进行上传过程还是应该使用AsyncTask将数据上传到服务器? 更具体地说,我可以在服务类中使用AsyncTask吗? 我应该使用它吗? 此服务应始终在内存中运行,以便每5秒向服务器发送一次数据。

使用Android服务处理网络连接

我正在开发一个需要维护与聊天服务器的网络连接的Android应用程序。 我知道我可以创建一个服务来启动与服务器的连接,但是服务如何通知Android Activity新的传入消息? 活动需要更新视图以显示新消息。 我对Android很新,所以任何帮助都表示赞赏。 谢谢!