Articles of android service

Android服务如何更新启动它的活动的UI?

我是Android编程的新手,因此我面临一些关于选择设计应用程序的最佳方式的一般问题。 我想做的基本上是媒体播放器。 我希望媒体播放器能够在服务上运行,因为我希望它也可以在未显示活动时播放。 我的问题是,如何根据服务工作流程更新我的活动用户界面(例如,歌曲更改,我希望显示其名称)? 我想我可以使用本地广播管理器,以便将我的服务中的意图发送到我的活动并调用UI更新(它看起来是否正确?) 但是……我希望我的服务在播放音乐时做一些事情(比如查询/更新数据库)。 出于这个原因,我在考虑在不同的进程(或线程?)上运行服务。 所以..我想,在不同的进程上运行服务,我将无法使用本地广播管理器(这是对的吗?)。 我希望我解释了我的疑惑……任何人都可以帮忙吗? 非常感谢!

将服务绑定到活动或片段?

我正在制作一个音乐播放器应用程序。 我有一个主要的活动,有多个片段,每个片段在设备专辑上明智地显示歌曲,艺术家明智等。 我有一个音乐服务,处理所有的播放和其他东西。 我感到困惑的是这项服务与我拥有的各种片段的绑定。 现在我将主要活动和每个片段分别与服务绑定,并且它的工作非常好。 但我想知道这是否真的是最好的做法? 有没有办法将主活动与服务绑定,然后一些如何在其子片段中使用它? 我可能错过了一些非常基本的活动概念或片段或服务。 所以有人请在这方面指导我。 我想这更像是一个概念性问题,因此不需要任何代码。 但如果需要,请告诉我。 编辑: 我的问题是:将服务绑定到具有多个子片段(每个片段将使用该服务)的活动的更好方法是什么?

如何在android中以编程方式查找当前运行的应用程序?

我是Android新手。 我正在开发应用程序,必须获取有关当前正在前台运行的应用程序的信息。 这意味着如果用户启动任何应用程序,我的应用程序应捕获已启动的应用程序信息,直到我的应用程序不应该中断启动的应用程序。 示例:如果用户启动浏览器应用程序,我的应用程序应在日志上打印浏览器应用程 我怎样才能做到这一点?

我可以使用greenrobot EventBus进行活动和服务之间的通信吗?

关于服务通信,我可以将EventBus库用作活动吗? 我在我的应用程序中尝试了以下内容: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); setContentView(R.layout.activity_music_player); Intent serviceIntent=new Intent(MusicPlayerActivityTest.this,MusicPlayerServiceTest.class); startService(serviceIntent); EventBus.getDefault().post(new SetSongList(songArraList, 0)); } @Override protected void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); } 并在我的服务onEvent调用。

Throwable:创建SD卡失败

请帮忙。 我的AVD没有运行,因为我在AVD上发布的没有运行 。 我试图创建一个新的AVD,但得到这个错误 Throwable:创建SD卡失败。 怎么解决这个? 真的需要认真的帮助……谢谢

BroadcastReceiver或Messenger通过Handler

我有一个IntentService需要将消息传递给Activity 。 我知道有两种方法可以做到这一点。 在Service端使用sendBroadcast() ,同时在Activity侧注册broadcastReciever ,它将接收消息。 将Messenger传递给服务side ,它将指向Activity侧的Handler ,该Handler将准备好从服务接收该消息。 哪一个有利于哪个目的? 或者两者都这样做?

onServiceConnected()未调用

我在使用后台服务时遇到问题。 我正在使用2项活动的服务。 第一个活动使用startService(intent)启动Service ,并使用bindService(intent, mConnection, Context.BIND_AUTO_CREATE);绑定它bindService(intent, mConnection, Context.BIND_AUTO_CREATE); 这非常有效,我可以在onServiceConnected()发送Message 。 第二个活动仅绑定到Service (因为它已经启动),再次使用bindService(intent, mConnection, Context.BIND_AUTO_CREATE); 现在这是我的问题: 在第二个活动中,我有一个Button ,当我按下它时应该使用该服务。 但是,在此活动中永远不会调用onServiceConnected() ,因此我无法使用绑定器创建Messenger以将Message发送到服务器。 有没有人知道什么时候完全调用onServiceConnected() ,或者它可能正在等待什么? 或者还有别的东西来解决这个问题? 编辑: bindService返回false,这可能导致什么? 提前致谢

用于getRunningServices的Android O替换

在以前的Android版本中,我使用此方法查找来自其他应用程序的服务是否已启动并正在运行。 它对我来说可靠: ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List services = manager.getRunningServices(Integer.MAX_VALUE); 但是,对于Android O,现在不推荐使用它,只会返回有关调用应用程序服务的信息。 我已经研究过其他解决方案,但我不想要求用户提供更多权限(UsageStatsManager,NotificationManager等)。 是否有另一种解决方案可以获取Android O中是否有来自其他应用的服务正在运行?

在取消绑定后防止Android服务被破坏

我有一个活动通过调用startService方法启动服务的场景: Activity和Service都在同一个包中。 然后,服务根据其配置参数,可以启动包含在不同包中的活动(让我们称之为ExternalActivity ):此活动通过bindService绑定服务; 一旦此活动完成其任务,它将调用unbindService方法,如下所示… // method of ExternalActivity @Override public void onDestroy() { super.onDestroy(); unbindService(…); } 结果,该服务也被销毁。 是否有可能避免破坏服务?

将服务绑定到android.app.Activity与将其绑定到android.app.Application

将服务绑定到android.app.Application并将其绑定到android.app.Application是否有任何根本区别。 我想将服务绑定到Application因为我想在Application中保留一些全局状态/数据,而不是在我的所有活动中复制它 。 谢谢。