相关疑难解决方法(0)

Android服务需要始终运行(从不暂停或停止)

我创建了一项服务,并希望始终运行此服务,直到我的手机重新启动或强制关闭.该服务应该在后台运行.

创建的服务和启动服务的示例代码:

启动服务:

Intent service = new Intent(getApplicationContext(), MyService.class);
getApplicationContext().startService(service);
Run Code Online (Sandbox Code Playgroud)

服务:

public class MyService extends Service {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO do something useful
        HFLAG = true;
        //smsHandler.sendEmptyMessageDelayed(DISPLAY_DATA, 1000);
        return Service.START_NOT_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO for communication return IBinder implementation
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

清单声明:

<service
    android:name=".MyService"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
</service>
Run Code Online (Sandbox Code Playgroud)

是否可以像应用程序暂停和其他任何操作一样运行此服务.一段时间后,我的应用程序暂停,服务也暂停或停止.那么如何在后台运行此服务并始终如此.

java service android

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

启动时Android BroadcastReceiver - 当Activity在Background中时继续运行

我正在监控收到的短信.

我的应用程序与a完美配合BroadcastReceiver.但它是从一个Activity开始工作,并希望一直保持BroadcastReceiver运行(而不仅仅是我的Activity运行时).

我怎样才能做到这一点?我已经查看了生命周期,BroadcastReceiver但文档中提到的所有内容都是生命周期仅限于onReceive方法,而不是保持BroadcastReceiver检查传入SMS 的生命周期.

我怎么能坚持这个?

谢谢

android broadcastreceiver

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

后台服务在android中被杀死

我们开发了一个Android应用程序,它涉及后台服务.为了实现我们使用的后台服务IntentService.我们希望应用程序每次轮询服务器60 seconds.所以在这里IntentService,服务器在while循环中被轮询.在while循环结束时,我们使用了Thread.sleep(60000)以便下一次迭代仅在60秒后开始.
但是在Logcat我看来,有时需要应用程序唤醒超过5分钟(从睡眠中退出并开始下一次迭代).它永远不会1 minute像我们想要的那样.

这是什么原因?后台服务应该以不同的方式实施吗?

Problem2

Android会在一段时间后终止此​​后台进程(意向服务).不能确切地说什么时候.但有时在后台服务被杀之前的几小时甚至几天.如果你能告诉我这个的原因,我将不胜感激.因为服务并不意味着被杀死.只要我们想要它们,它们就意味着在后台运行.

代码:

@Override
 protected void onHandleIntent(Intent intent) {
  boolean temp=true;
  while(temp==true) {
    try {
      //connect to the server 
      //get the data and store it in the sqlite data base
    }
    catch(Exception e) {
      Log.v("Exception", "in while loop : "+e.toString());
    }
    //Sleep for 60 seconds
    Log.v("Sleeping", "Sleeping");
    Thread.sleep(60000);
    Log.v("Woke up", "Woke up");

    //After this a value is extracted from a table
    final Cursor …
Run Code Online (Sandbox Code Playgroud)

android android-service

36
推荐指数
3
解决办法
5万
查看次数

需要有关如何在后台永远运行Android服务的代码示例,即使设备正在休眠,如Whatsapp?

我已经尝试了各种方法来实现这一目标,但我的服务最终会被杀死.

我想用AlarmManager每隔一小时触发一次课.即使设备处于休眠状态,它也应该发出闪烁的LED警报,振动或声音.无论如何,它应该永远运行.

我注意到Whatsapp一直在运行,即使我杀死所有正在运行的应用程序并清除内存,让设备进入睡眠状态,但仍然Whatsapp接收消息并提醒我.他们是怎么做到的?我想对我的应用做同样的事情.

service android background-process alarmmanager

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

Android中的服务与线程

我正在寻找Android应用程序中应该使用的服务.

文件说

服务是一种应用程序组件,可以在后台执行长时间运行的操作,但不提供用户界面.

我已经读过这个线程应用程序线程vs服务线程,说相同的服务是在后台运行操作.

但是这里也可以使用Thread.它们之间的任何差异以及您应该使用它们的位置

service android

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

如何强制重启服务?

我有一个后台服务,当内存不足时,它有时会被操作系统杀死.

  1. 如何模拟这种行为,以便我可以调试它?

开发指南简单地说"如果您的服务已启动,那么您必须将其设计为优雅地处理系统重新启动.如果系统终止您的服务,它会在资源再次可用时立即重新启动".

  1. 从被杀死到完成重启的调用顺序是什么?

在一个(相关的)问题上,当服务被操作系统杀死时,在服务中启动的主动运行的AsyncTask会发生什么,即没有service.onDestroy被调用?它是否继续运行或与服务一起静静地撕开?

service android restart low-memory kill-process

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

如何模拟Android系统杀死的服务

在开发过程中,我想测试系统杀死服务的情况.这是因为我在Android Wear和掌上电脑之间进行通信时失去连接.我认为它与系统杀死一些服务有关.

有没有人建议如何处理这个问题?

android android-service wear-os

8
推荐指数
1
解决办法
1501
查看次数

一段时间后服务停止工作。需要连续工作

我正在开发一个计步器应用程序,在其中计算行走的步数并在午夜将其更新到服务器。我有一个持续运行的服务来完成这一切。

这是我的服务:

    public class StepCounterService extends Service implements SensorEventListener, StepListener, WebServiceInterface, GoogleApiClient.ConnectionCallbacks,
        GoogleApiClient.OnConnectionFailedListener, LocationListener {

    private static final int SERVICE_ID = 27;
    private static final int SEND_SESSION_REQUEST_CODE = 1;
    private static final int SEND_ACTIVITY_REQUEST_CODE = 2;
    private static final int MAIN_NOTIFICATION_ID = 3;
    private static final int SECONDARY_NOTIFICATION_ID = 4;
    private LocalBroadcastManager broadcaster;

    static final public String STEP_INCREMENT = "com.app.STEP_INCREMENTED";
    static final public String SESSION_COMPLETE = "com.app.SESSION_COMPLETE";
    static final public String ACTIVITY_COMPLETE = "com.app.ACTIVITY_COMPLETE";
    static final public String STEP_INCREMENT_KEY = …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver alarmmanager android-service

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