Articles of android intentservice

从IntentService调用AsyncTask的问题

我创建了IntentService类并执行asyncTask但在此代码行pDialog.show();调用onPreExecute()时会onPreExecute()exceptionpDialog.show(); AsyncHandlerService类— public class AsyncHandlerService extends IntentService{ ProgressDialog pDialog; HttpPost post; HttpResponse response; Context ctx; public AsyncHandlerService() { super(“AsyncHandlerService”); ctx = this; } @Override protected void onHandleIntent(Intent intent) { new LoadDeviceInfo().execute(); } class LoadDeviceInfo extends AsyncTask { @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(ctx); pDialog.setMessage(“Updating device info…”); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); //Exception here.. […]

null intent重新传递给Service onStartCommand()

在Android文档中,服务的“ onStartCommand() ”具有作为param的意图,根据文档: “提供给startService(Intent) ,如给定的。如果服务在其进程消失后重新启动,它可能为null,并且它之前已返回除START_STICKY_COMPATIBILITY之外的任何内容。” 但是,返回值START_REDELIVER_INTENT应该在重新启动服务时返回原始意图。 任何人都可以解释为什么一个intent可以为null,即使该flag设置为START_REDELIVER_INTENT ?

如何从WakefulBroadcastReceiver启动IntentService

我有一个应用程序,您应该可以使用我将在此问题中发布的代码完全且非常轻松地重新创建。 这是清单文件: 如您所见,它包含一个活动,一个(唤醒)广播接收器和一个intentservice,都在同一个包中。 活动在启动时开始,这是代码: package com.example.broadcasttest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendBroadcast(new Intent(this, TestReceiver.class)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. […]

IntentService的默认构造函数(kotlin)

我是Kotlin的新手,也是使用intentService的一点点堆栈。 Manifest向我显示一个错误,我的服务不包含默认构造函数,但在服务内部它看起来没问题且没有错误。 这是我的intentService: class MyService : IntentService { constructor(name:String?) : super(name) { } override fun onCreate() { super.onCreate() } override fun onHandleIntent(intent: Intent?) { } } 我还尝试了另一种变体: class MyService(name: String?) : IntentService(name) { 但是当我尝试运行此服务时,我仍然会收到错误: java.lang.Class has no zero argument constructor 任何想法如何修复Kotlin中的默认构造函数? 谢谢!

HandlerThread与IntentService

我想请某人解释一下,HandlerThread和IntentService之间的主要区别是什么,以及主要的用例场景是什么? 我知道HandlerThread包含一个Looper,它管理messageQueue,由Handler提供。 据我所知,你可以推送HandlerThread的任务,它将会执行。 使用非UI相关的长时间运行操作非常棒,您可以通过runOnUiThread()将结果推送回UI。 相比之下, IntentService适用于长时间运行,非uUI相关的操作,可以按顺序执行任务,当它完成调用selfStop()以完成关闭的作业时。 如果一个IntentService正在处理一个任务,当一个新的请求到达它时,它将添加到队列并处理第二个,当它完成第一个时。 从我的观点来看,他们以同样的方式做同样的工作。 假设我有一个应用程序,按钮上的用户TAP,我开始下载文件。 如果用户多次点击,则新任务将排队,仅在第1次完成时启动第2次。 我该怎么用? IntentService还是HandlerThread?

我应该为我的Android应用程序使用Service或IntentService吗?

如果我错了,请纠正我: 1) 服务用于在后台执行长任务。 服务在UI线程中运行,因此如果有长任务,那么它可能会冻结我们的UI。 只要我们告诉它停止,服务将继续独立于应用程序运行。 2)另一方面, IntentService用于在单独的线程中执行短任务。 它在完成任务时自动终止。 我该怎么做: 1)每5秒检查一次位置 2)如果位置发生变化,请将其发送到服务器并使用新的位置值更新UI 令我困惑的是: 我是否应该使用Service或IntentService,因为我需要在5秒后连续执行,并且不希望我的UI线程无响应。 此应用程序将用于跟踪车辆。

在多次调用IntentService的startService时,intent是否会排队?

我想用IntentService从互联网上下载。 我通过调用startService(intentserive);将一个url通过Intent传递给IntentService startService(intentserive); 。 如果我为各种意图调用startService ,那么意图会排队下载吗?

ResultReceiver.send只能从同一个库组中调用

我有一个使用android.support.v4.os.ResultReceiver传递数据的IntentService。 在IntentService中,当我使用ResultReceiver.send方法返回结果时,Android Studio显示错误说明 ResultReceiver.send只能从同一个库组中调用(groupId = com.android.support) 我在调用ResultReceiver的构造函数时收到类似的消息。 但即使出现此错误,代码也会运行。 在我将支持库版本升级到25.1.1之后,这开始出现。 我该怎么办才能解决这个问题?

向IntentService询问有关其队列的信息

我有一个IntentService,它将需要对我的Web服务器进行的Web服务调用进行排队。 因此,每个Intent都是要进行的Web服务调用。 我想设置一些东西,我的应用程序可以询问这个IntentService,如果它有任何包含特定数据的Intent(IE:“你是否已经在等待向云询问x数据?或者我是否需要告诉你做到了吗?“)。 有关如何扩展IntentService以执行此操作的建议吗? 是否可以遍历IntentService的Intent队列? 或者我需要采用IntentService代码并更改它? 我唯一的另一个想法是向数据库添加一个表并记录队列中的哪些调用,每个日志在完成后从表中删除。

是否有任何开发模式可以替换网络请求的IntentService?

在我与同事一起开发的当前应用程序中,我们使用IntentServices和Volley调用来处理RESTful API网络请求。 它只是简单的JSON字符串数据和一些小图像。 我对那些在处理网络请求方面经验丰富的问题​​是:在那里实施更合适或更清洁的东西吗? 根据我的理解,使用IntentService的优势在于它在主线程的后台运行,并且通常是Android OS杀死的最后一件事。 缺点是IntentServices是按顺序运行的。 我一直在阅读很多关于RxJava和Retrofit的内容,并且觉得我们的需求可以通过这种组合得到更好的服务。 改造本身就足够了,但我真的很感激第三方洞察力。