Articles of intentservice

从活动中停止IntentService

我有一个IntentSerivce有时在后台运行,在某些情况下它可能是一个相当长的运行过程。 我给出了一个选项,让用户退出基本上停止和轮询的应用程序,并忽略任何GCM推送通知。 但是,如果推送通知进来了, IntentService需要花费一些时间来完成它的工作(从服务器获取信息并在需要的时候向用户发送通知,比如新的消息到达等)。 问题在于,如果用户在intentservice仍在运行时select“退出”应用程序,他们仍然会收到我不想要的通知。 我知道服务有stopSelf()方法,但是当我知道用户通过菜单button“退出”应用程序时,我需要在活动中停止它。 发送另一个intent到服务不起作用,因为意图排队并调用context.stopService(intent); 在我的活动也不起作用,那么我怎么能阻止它呢?

是否有任何理由继续使用IntentService来处理GCM消息?

如你所知,最近Google改变了他们的GCM文档,他们声称不再需要IntentService来处理到达的GCM消息。 所有的处理都可以在BroadcastReceiver完成。 当试图找出是否有任何充分的理由继续使用IntentService ,我遇到了这个引用 : WakefulBroadcastReceiver处理GCM消息的服务(通常是IntentService),同时确保设备不会在进程中回到睡眠状态。 包括一个IntentService是可选的 – 你可以select在一个普通的BroadcastReceiver中处理你的消息, 但实际上,大多数应用程序将使用一个IntentService 。 为什么大多数应用程序使用IntentService ? 在BroadcastReceiver直接处理GCM消息的情况是否有效?

后台进程定期扫描用户的位置,并在应用程序未打开时更新本地数据库

我正在创build一个应用程序,每半小时检查一次用户位置,并更新用户在本地数据库中的位置,然后根据用户的位置运行CRUD查询,即使应用程序未运行。 我该怎么做 ? 我已经提到这个http://techtej.blogspot.com.es/2011/03/android-thread-constructspart-4.html文章,我仍然对我的结果是正确的方法感到困惑。 根据这篇文章,我有4个选项可以实现 1)服务:但是由于我觉得这将是一个长期的操作与本地数据库,我觉得我应该忽略这一个。 2)IntentService:这不能执行多个任务,所以我觉得这个也应该避免,因为我必须得到用户的位置和扫描数据库,更新数据库(3任务) 3)线程:我不知道如何调用这个应用程序没有打开 4)AsyncTask:我不知道如何调用这个应用程序没有打开。 基本上我在寻找类似CRON JOB的东西,在位置数据上工作时在本地数据库上运行。 如果你能把我和一些教程联系起来,并且用一个简单的例子来回答,让我了解所有4种方法的区别,那就太好了。 //在3月16日编辑:我已经读了一些关于在API 21中引入的JobScheduler,但不知道它是否也支持,直到姜饼,这是我的问题的正确方法 感谢名单

Android IntentService不启动

我知道这个问题已经被问了很多次,但其他所有的线程都没有解决我的问题,我看不出我的代码有什么问题。 也许我在这里错过了一些东西,有人能帮我吗? 意向服务代码: package Services; import android.app.IntentService; import android.content.Intent; import android.widget.Toast; public class WifiSearchService extends IntentService { /** * A constructor is required, and must call the super IntentService(String) * constructor with a name for the worker thread. */ public WifiSearchService() { super("WifiSearchService"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this, […]

如何从IntentService收集信息并更新Android UI

我正在学习Android,我坚持我的服务。 我的应用程序每隔X秒通过Socket连接到我的服务器,接收一个XML,parsing信息,并在TextView中显示。 我想知道如何实现一个IntenService来做到这一点,以及如何将信息传递给用户界面。 我很难看到很好的例子。 我感谢你能给我的任何帮助。 谢谢!

Google io 2010中的其他客户端应用程序devise方法是否仍然是最新的?

两年前,有碎片,意图服务,光标加载器。 方法仍然是最新的,或者有没有更好的或成熟的模式来devise一个Androidrest客户端,尤其是比较选项B(我没有权限发布图像,而不是图像可以从这个职位 )。 我知道内容提供者部分是必不可less的。 那服务帮手和服务组件呢? 到目前为止,startService方法是Context或其子类的本质。 这意味着服务帮手将是一个活动。 所以从内容提供者开始一个活动,或者是从顶层的活动开始,这样做是优雅的。 对于那些深入了解io 2011 iOS应用程序源代码的人来说 ,您会考虑将HomeActivity中的静态类SyncStatusUpdaterFragment作为服务助手,尽pipe它无法启动SyncService,但它会侦听来自SyncService的callback,触发UI的刷新。 那么可以把它看作是Virgil Dobjanschi的方法吗? 有服务,意图服务,asyncTask和线程。 在我看来,意向服务适合从远程服务器同步大量数据。 那为什么他们在使用它呢 ? 但是常见的情况是只有一部分项目会与远程服务器同步。 所以意图服务太重了。 甚至是服务方式。 我们可以只使用内容提供者或其中的某个组件的asyncTask或线程来完成这种任务。 还是有任何令人信服的理由使用该服务,并通过服务帮手 – 服务处理器path。 我正在谈论一个严重的应用程序。 所以你有什么意见?

当我使用IntentService和ResultReceiver时,当我的Activity被破坏时会发生什么

我已经通过networkingsearchfind这个答案。 但没有find结果。 对不起,我是一个非常新手在Java和Android编程。 我会更详细地阐述我的问题。 假设我的Activity启动了一个IntentService,它在后台独立运行。 该服务“订阅”到ResultReceiver的callback来更新活动UI。 在服务执行长时间运行的过程中,活动被破坏。 那么如果服务通过ResultReceiver发送一个回复或进度更新给Activity,会发生什么? 因为我知道,ResultReceiver需要有一个活动的参考。 在我的项目中,我需要开发一个video剪辑消息应用程序。 当用户捕获video时,它会将数据传递给服务,服务将执行上传以及将一些信息保存到数据库中。同时通过ResultReceiver将更新进度发布到Activity UI。 用户可以按照自己的喜好退出或closures活动。 但是,当他们回到应用程序/活动,如果上传/下载仍在进行,它需要显示当前的进展.. 最初我想到了Asynctask,但也有类似的问题,正如我所提到的。 它需要调用者Activity的引用。 有什么地方可以达到我提到的要求吗? 对不起,很长的职位。 希望有人能够启发我一点,有更好的代码片段。 非常感谢 :) 编辑:简而言之,是否有办法将新创build的Activitydynamic绑定到正在运行的IntentService,以便服务可以将进度更新发送到正确的Activity?

IntentService中的数据更改

我正在使用IntentService处理来自FCM推送通知的消息。 当消息一个接一个,但是当设备没有连接到networking时,并且在设备再次连接之后,它完全按照需要正常工作.FCM一次发送大量消息,并且在这种情况下,服务在处理意图数据时导致一些模糊的在调用Web服务时会导致意外的行为。 我的推送通知消息处理程序类: public class PushMessageHandler extends FirebaseMessagingService { private final static String TAG = "PushMessageHandler"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); if (remoteMessage.getData() != null){ Log.d(TAG, String.valueOf(remoteMessage.getData())); Intent notificationService = new Intent(this, NotificationService.class); notificationService.putExtra(ResponseConstants.NOTIFICATION_FIELD,remoteMessage.getData().get(ResponseConstants.NOTIFICATION_FIELD)); notificationService.putExtra(ResponseConstants.NOTIFICATION_DATA,remoteMessage.getData().get(ResponseConstants.NOTIFICATION_DATA)); notificationService.putExtra(ResponseConstants.NOTIFICATION_TYPE,remoteMessage.getData().get(ResponseConstants.NOTIFICATION_TYPE)); try { notificationService.putExtra(ResponseConstants.NOTIFICATION_IMAGE,remoteMessage.getData().get(ResponseConstants.NOTIFICATION_IMAGE)); notificationService.putExtra(ResponseConstants.NOTIFICATION_TITLE, remoteMessage.getData().get(ResponseConstants.NOTIFICATION_TITLE)); } catch (Exception e){ Crashlytics.logException(e); } try { notificationService.putExtra(ResponseConstants.DATASETS,remoteMessage.getData().get(ResponseConstants.DATASETS)); } catch (Exception […]

当服务在后台运行时,asynchronous任务无法正常工作(doInBackground不执行),Android

我注意到,有时asynchronous任务不能正常工作,实际上它的doInBackground()方法不会被调用 ,这主要发生在任何服务在该活动的后台运行。 例如,当音乐在服务后台运行时,Async任务不会在后台parsingXML,因为doInBackground当前不工作,并且进度对话框或progressBar保持旋转状态。 我读了几篇文章, AsyncTask.THREAD_POOL_EXECUTOR可以帮助解决这些问题: if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) { new Test().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { new Test().execute(); } 但对我来说这没有帮助 。 在上述暗示之后有相同的问题。 在这里,我只是给我一些示例代码来了解我在做什么:: public class TestAct extends Activity { ImageButton play,forward,backward; private ListView mList; // many more variables @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_layout); //binding the service here // start service is called […]

只发送广播到特定的活动

我有一个Activity在方法onCreate(…)中用IntentFilter创build一个BroadcastReceiver : IntentFilter iFilter = new IntentFilter("action"); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { } }; registerReceiver(receiver, iFilter); 另一方面是一个IntentService ,它将发送一些数据: Intent intent = new Intent(getApplicationContext(), receiver.class); intent.setAction("action"); […] sendBroadcast(intent); 但似乎没有工作。 没有收到广播 。 我的服务类是在一个Android库,也许这会造成麻烦。 感谢您的任何build议。