Articles of android intentservice

Android:intentservice,如何中止或跳过handleintent队列中的任务

我有一个调用意图服务的活动(“ApplicationActivity”)(“DownloadService”) intentService在后台下载来自互联网的文件,但我希望能够中止特定的下载……… 所以我要说我把5个文件放在队列中:文件1,2,3,4,5 意图服务开始下载数字1,然后是第二个等等…… 1)有没有办法说意图服务中止你在方法句柄事件中正在做什么(在这种情况下下载文件) 1)并开始下载下一个? 2)是否可以从队列中删除元素,例如在下载文件1时,从队列中删除文件4,以便在数字3之后直接进入5? 不久,我需要一种方法来与队列通信来执行这两个简单的操作,但我没有在互联网上find任何有用的东西:( TNX

地理围栏:通过后台服务发送时HTTP请求失败。 给出UnknownHostException

我在android应用程序中实现了Geofence。 我按照这个链接在app中实现了’Geofence’。 我正在使用’Retrofit’库来调用’HTTP’请求。 应用具有以下权限: 这是我的’IntentService’代码: public class GeofenceService extends IntentService { private static final String TAG = GeofenceService.class.getName(); public static final int GEOFENCE_NOTIFICATION_ID = 0; public GeofenceService() { super(TAG); } @Override protected void onHandleIntent(Intent intent) { // Retrieve the Geofencing intent GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent); createLoggerFile(); // Handling errors if ( geofencingEvent.hasError() ) { String […]

在IntentService和AsyncTask(Android)之间使用共享代码时,Realm`从错误的线程访问`错误

我有一些代码可以下载“当前”对象的JSON。 但是当警报响起时(当应用程序没有运行任何UI时),以及应用程序运行时的AsyncTask,需要由IntentService调用相同的代码。 但是,我收到一个错误,说Realm access from incorrect thread. Realm objects can only be accessed on the thread they were created. Realm access from incorrect thread. Realm objects can only be accessed on the thread they were created. 但是,我不明白这个堆栈跟踪是如何或为什么在不同的线程上。 通过复制所有共享代码并将其直接粘贴到DownloadDealService的onHandleIntent方法中,我能够摆脱错误,但它非常草率,我正在寻找一个不需要复制代码的更好的解决方案。 如何在不重复代码的情况下摆脱此错误? 谢谢。 public class DownloadDealService extends IntentService { … @Override protected void onHandleIntent(Intent intent) { Current todaysCurrent […]

Android Service扩展了ResultReceiver for IntentService,如何实现CREATOR?

我的应用程序依赖于在后台与外部硬件保持同步的Service 。 因为服务在主线程上运行,所以它使用IntentService异步执行任何繁重的工作。 以下是解释控制流的代码的最小化示例: public class MyService extends Service { private final Handler handler = new Handler(); void someMethodDoesCallBarAsynchronously(){ Intent i = new Intent(this, MyIntentService.class); i.putAction(ACTION_FOO); i.putExtra(EXTRA_RECEIVER, new MyResultReceiver(handler)); startService(toGetScannerStatus); } void receivedFooResult(String bar){ //… } public class MyResultReceiver extends ResultReceiver{ public MyResultReceiver(Handler handler){ super(handler); } @Override protected void onReceiveResult(int resultCode, Bundle resultData) { super.onReceiveResult(resultCode, […]

即使应用程序关闭,如何保持IntentService运行?

在我的Android应用程序中,我通过调用从Activity中启动IntentService startService(new Intent(this, MyService.class)); 它就像一个魅力。 我可以在Activies之间移动,按Home键切换到其他应用程序……它仍在工作。 但如果我从最近的屏幕上删除我的应用程序,我的服务就会停止。 我怎么能避免这个? 换句话说,即使我的应用程序已从最近的应用程序关闭,如何保持我的服务运行? 我的服务代码如下: public class MyService extends IntentService { public MyService() { super(“MyService”); } @Override protected void onHandleIntent(Intent intent) { //Here I run a loop which takes some time to finish } }

Android IntentService无法实例化类; 没有空的构造函数

我有一个需要访问在线API的MainActivity类(因此使用网络资源)。 这需要我在单独的文件HttpRequestService.java创建的后台线程。 MainActivity.java: public class MainActivity extends Activity { public static final String API_KEY = “KEYKEYKEYKEYKEY”; public static final String CLIENT_ID = “IDIDIDIDIDIDID”; private final String BROADCAST_ACTION = “com.example.BROADCAST”; private final String EXTENDED_DATA_STATUS = “com.example.STATUS”; static final String LOGCAT_TAG = “TAGTAGTAGTAGTAG”; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onResume() { […]

IntentService的onHandleIntent(Intent)获取null参数

我正在使用IntentService在Android上为我的应用程序运行后台服务。 奇怪的是,我收到很多崩溃报告,其中传递给onHandleIntent的意图为空。 我甚至不确定这是怎么可能的,而且看起来非常奇怪。 任何人都可以建议为什么会发生这种情况? 堆栈跟踪 java.lang.NullPointerException at com.example.MyService.onHandleIntent(MyService.java:466) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.os.HandlerThread.run(HandlerThread.java:61) 我的服务文件中的第466行,其中空指针exception: 465 protected void onHandleIntent(Intent intent) { 466 Bundle data = intent.getExtras(); 该服务启动为: serviceIntent = new Intent(this, MyService.class); serviceIntent.putExtra(“ip”, ip); serviceIntent.putExtra(“port”, port); startService(serviceIntent); 编辑:我现在意识到我可能会误用IntentServices。 当我启动服务时,我从onHandleIntent()开始一些工作线程,即使在onHandleIntent()返回后也继续运行。 并通过绑定到服务并调用成员函数/回调来与线程通信。 我将研究使用更好的方法来为此目的使用服务,同时我仍然不明白传递的意图是如何为空。 我只能怀疑Android系统自己使用null意图调用onHandleIntent,这似乎很奇怪。 有人可以解释为什么android系统可能以这种方式调用它吗?

IntentService多次调用startService时,intent是否会进入队列?

我想用IntentService从网上下载。 我通过调用startService(intentserive); Intent传递给IntentService startService(intentserive); 。 如果我为各种意图调用startService ,意图是否进入队列下载?

本地崩溃在/system/lib/libart.so

我在Play商店中有一个应用程序,它有一个IntentService ,在应用程序启动时执行一些工作,并导致Android 5.0上的本机崩溃。 此服务只是扫描资产文件夹的应用程序更新的目的。 具体来说,这个崩溃似乎发生在三星S5后升级到棒棒糖,但我不知道它是否严格相关的设备,因为这是一个意大利的应用程序,这里仍然是唯一广泛弥散(即我所知)设备是越来越棒棒糖。 不过,我在模拟器上试了一下,现在有了Android 5,而且工作正常。 我附上的堆栈跟踪,如何进行的任何帮助将不胜感激…与本机的问题,我不知道该把手放在哪里。 *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: 'samsung/kltexx/klte:5.0/LRX21T/G900FXXU1BNL9:user/release-keys' Revision: '14' ABI: 'arm' pid: 24219, tid: 24259, name: IntentService[I >>> it.mydomain.myapp <<< signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 r0 afcb8c00 r1 001000e6 r2 af201428 […]

在代码中的“华硕自动启动pipe理器”默认设置“允许”权限

我有一个应用程序需要在后台运行,所以我使用了一个WakeFullService。 但在华硕Zenfone它不工作,因为自动启动pipe理器不允许应用程序运行。 我的期望是: 在应用程序安装期间或在应用程序打开时,在自动启动pipe理器中设置“允许”权限。 华硕自动启动pipe理器提供的API可以帮助我检查我的应用程序的权限状态,以便我可以通过正常的文本提示通知用户打开权限。