我创建了一项服务,并希望始终运行此服务,直到我的手机重新启动或强制关闭.该服务应该在后台运行.
创建的服务和启动服务的示例代码:
启动服务:
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)
是否可以像应用程序暂停和其他任何操作一样运行此服务.一段时间后,我的应用程序暂停,服务也暂停或停止.那么如何在后台运行此服务并始终如此.
我正在监控收到的短信.
我的应用程序与a完美配合BroadcastReceiver.但它是从一个Activity开始工作,并希望一直保持BroadcastReceiver运行(而不仅仅是我的Activity运行时).
我怎样才能做到这一点?我已经查看了生命周期,BroadcastReceiver但文档中提到的所有内容都是生命周期仅限于onReceive方法,而不是保持BroadcastReceiver检查传入SMS 的生命周期.
我怎么能坚持这个?
谢谢
我们开发了一个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) 我已经尝试了各种方法来实现这一目标,但我的服务最终会被杀死.
我想用AlarmManager每隔一小时触发一次课.即使设备处于休眠状态,它也应该发出闪烁的LED警报,振动或声音.无论如何,它应该永远运行.
我注意到Whatsapp一直在运行,即使我杀死所有正在运行的应用程序并清除内存,让设备进入睡眠状态,但仍然Whatsapp接收消息并提醒我.他们是怎么做到的?我想对我的应用做同样的事情.
我正在寻找Android应用程序中应该使用的服务.
文件说
服务是一种应用程序组件,可以在后台执行长时间运行的操作,但不提供用户界面.
我已经读过这个线程应用程序线程vs服务线程,说相同的服务是在后台运行操作.
但是这里也可以使用Thread.它们之间的任何差异以及您应该使用它们的位置
我有一个后台服务,当内存不足时,它有时会被操作系统杀死.
开发指南简单地说"如果您的服务已启动,那么您必须将其设计为优雅地处理系统重新启动.如果系统终止您的服务,它会在资源再次可用时立即重新启动".
在一个(相关的)问题上,当服务被操作系统杀死时,在服务中启动的主动运行的AsyncTask会发生什么,即没有service.onDestroy被调用?它是否继续运行或与服务一起静静地撕开?
在开发过程中,我想测试系统杀死服务的情况.这是因为我在Android Wear和掌上电脑之间进行通信时失去连接.我认为它与系统杀死一些服务有关.
有没有人建议如何处理这个问题?
我正在开发一个计步器应用程序,在其中计算行走的步数并在午夜将其更新到服务器。我有一个持续运行的服务来完成这一切。
这是我的服务:
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 ×8
service ×4
alarmmanager ×2
java ×1
kill-process ×1
low-memory ×1
restart ×1
wear-os ×1