Articles of android service

即使应用程序关闭,如何保持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服务:START_STICKY不适用于Kitkat

我在应用程序中使用服务来监听用户按下他/她的电源按钮的次数。 实施在所有设备上都运行良好。 但是当我在Android Kitkat上测试应用程序时,我注意到了一些错误。 只要我将应用程序从最近的应用程序中移开,应用程序就不再会监听电源按钮。 这是我正在使用的代码: public class Receiver extends Service { Notification notification; private static final int NOTIFICATION_ID = 0; NotificationManager manager; PendingIntent toOpen; Intent intent; private BroadcastReceiver POWER_BUTTON = new Powerbuttonrecceiver(); @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent intent, int flags, int […]

永久收听剪贴板更改

我正在构建一个应用程序,它将启动一个能够监听剪贴板更改的服务。 我真正想要的是永久记录(并在存储中写入)剪贴板中的每一个变化,所以当我启动我的应用程序时,我可以读取该服务所写的存储文件。 这意味着,我的应用程序和服务之间不需要直接通信,也不需要使用唤醒锁来保持设备正常运行(因为剪贴板在设备处于睡眠状态时几乎不会改变)。 我正在使用处理程序来反复检查剪贴板,我想知道如何实现clipboardListener来检查这些更改。

访问sim工具包的android应用程序

我想构建一个访问来自sim工具包的信息的应用程序。 我的运营商允许您访问诸如查看帐户余额,发送和接收现金以及大量服务等服务。 是否有任何资源,教程甚至只是指示我如何访问SIM工具包中的信息。

为什么我不应该使用消息总线而不是加载器和服务?

在典型的Android项目中,我们需要以干净的方式将数据从某个地方(REST,SQL,缓存等)提取到UI中,我们通常使用Loader,Service或(可能是yuk)AsyncTask,但我发现所有这些方法由于以下几个原因不满意: 它们很难看,尤其是具有令人震惊的API结构的Loaders 它很容易被包裹在线程中,并踩在UI线程上 我们的表示层代码受到Android代码和样板的污染。 我们经常将Android对象(例如Cursors)传递到UI层,这使得一个干净的架构几乎无法实现。 这迫使我们将业务领域特定代码(理想情况下是普通Java对象)与Android平台代码混合在一起 – 对于未来开发的可读性,维护,测试或灵活性而言并不是很好。 在实践中,我们经常会遇到庞大,混乱的Activity / Fragment类。 我被这些文章中概述的想法所吸引: http : //fernandocejas.com/2014/09/03/architecting-android-the-clean-way/ http://antonioleiva.com/mvp-android/ http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html 成功开始使用MVP将活动/碎片/视图分解为更小/更清洁的部分,我现在认为上述问题的解决方案可能是依赖于消息总线(Otto,EventBus等)而不是服务或加载器或任何与域数据交互的内容。 所以在实践中,这意味着不是使用(例如)CursorLoader从数据库加载Cursor,而是使用消息总线发送消息来请求数据,数据被加载到后台线程以响应该消息,然后通过UI线程上的消息到达时处理响应数据。 对我来说至关重要的是,我更倾向于将数据结构从业务领域推出,而不是Android域,所以我更喜欢一个业务对象数组,一个Cursor。 这是工程设计,总是需要权衡,虽然这似乎提供了更清晰的关注点分离,但是装载机/服务模板的减少,缺点是什么? 理解代码可能更难(特别是对于新开发人员) 有必要确保在正确的线程上发送和接收消息(Otto似乎在这里可能有限制) 有必要避免将所有事情都作为一种信息实施的诱惑,这最终会适得其反 传递业务对象集合可能不如使用像Cursors这样的对象。 虽然在许多情况下它在实践中是一个问题吗? 我不知道Otto / EventBus是否只是为了传递非常小的消息,或者是否适合传递更大的对象(例如业务对象数组)。 我的问题是,有没有基本的原因不采取这种基于消息的方法与Android应用程序?

如何停止运行服务?

我有这个描述服务的代码: public class navigation_web extends Service { Context context; public void navigation() { Cursor mCur = getContentResolver().query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, null); mCur.moveToFirst(); if (mCur.moveToFirst() && mCur.getCount() > 0) { while (mCur.isAfterLast() == false) { Log.v(“titleIdx”, mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)); Log.v(“urlIdx”, mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX)); mCur.moveToNext(); } } // Browser.clearSearches(getContentResolver()); } public void onCreate() { // Browser.clearHistory(getContentResolver()); // Browser.clearSearches(getContentResolver()); navigation(); // super.onCreate(); […]

访问被拒绝查找属性“camera.hal1.packagelist”

在服务中使用相机时,移动屏幕变得不可触摸(由透明窗口锁定)并且仅在出现错误之下 Access denied finding property “camera.hal1.packagelist” 将是什么原因及其解决方案? 请帮忙..

控制Android或任何其他音乐播放器的默认音乐播放器

如何控制Android或任何其他播放器的默认音乐播放器? 通过控制我的意思是暂停,播放,下一个等。我必须绑定服务吗? 我曾尝试使用IMediaPlaybackService但它无法正常工作。 因为我在Android市场上看到了控制音乐播放器的应用程序,所以肯定有一条出路。 任何想法?

即使我正在发布它,WakeLock仍然保持错误

我有一个应该在后台运行的服务。 它在我的应用程序打开时启动,并在用户关闭我的应用程序时结束。 每当我的应用程序在后台或屏幕关闭时,我仍然需要运行该服务。 我用WakeLock实现了这一点,但由于某种原因我在标题中得到了错误。 这是令人担忧的,因为我可能是内存泄漏WakeLock(如果我理解正确)。 我可以通过重新启动我的应用程序来触发错误。 这是相关的代码: public class SomeService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); PowerManager manager = (PowerManager) getSystemService(POWER_SERVICE); mWakeLock = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, “TAG”); if (!mWakeLock.isHeld()) mWakeLock.acquire(); //Handle other processing return START_STICKY; } @Override public void onDestroy() { if (mWakeLock.isHeld()) mWakeLock.release(); super.onDestroy(); } } […]

应用程序从最近的应用列表中删除后,Android服务崩溃

我有一个由活动启动(未绑定)的服务。 如果活动被破坏(例如通过按下后退按钮),则服务继续运行,这当然是有意的。 但是,如果我将活动从“最近的应用”列表中滑出,则会立即重新启动该服务。 这是可重现的,每次从列表中删除活动/应用程序时,都会对服务的onCreate方法进行新调用。 之间没有打电话给onDestroy! 首先,我认为该服务被android杀死,即使我没有看到杀人的理由(活动和服务都没有资源消耗的东西,事实上它们是简约的,什么都不做)。 但后来我注意到服务实际上崩溃了。 V/MainActivity(856): onDestroy // swipe out of the list I/ActivityManager(287): Killing 856:com.example.myapp/u0a10050: remove task W/ActivityManager(287): Scheduling restart of crashed service com.example.myapp/.TestService in 5000ms 代码并不值得注意,但在这里 活动: public class MainActivity extends Activity { private static final String TAG = “MainActivity”; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v(TAG, “onCreate, starting […]