我创建了一个仅用于从链接启动的活动(使用intent过滤器.)我不希望这个活动有一个GUI - 我只是想让它启动一个服务并在栏中发出通知.我试图在我的服务中为链接设置intent过滤器,但这不起作用.有没有更好的方法来回答意图过滤器 - 或者我可以让我的活动没有GUI吗?
对不起,如果我困惑,艾萨克
user-interface android intentfilter broadcastreceiver android-service
我已经阅读了很多Android服务.据我了解,生命周期是:
void onCreate()
void onStart(Intent intent)
...
void onDestroy()
Run Code Online (Sandbox Code Playgroud)
http://www.linuxtopia.org/online_books/android/devguide/guide/topics/fundamentals.html
但是没有onStop方法.问题:
对于上下文,我有一些资源,我想在服务运行时分配和释放(在"已启动"中),以及我希望在服务处于"已创建"状态时分配和释放的另一组资源.
我正在创建一组应用程序,我为所有这些应用程序提供了相同的后台服务.
我正在尝试创建一个只有这个的应用程序Service.所以我不会在所有这些中重复它,但事情是不需要任何东西Activity.因为它不需要用户界面,因此用户无法关闭它,除非他们停止了Service.
我试图删除Activity,但然后应用程序不运行或启动.
我的问题是:我可以创建一个完全像Google Play Services其他应用程序可以使用它的应用程序Service.
如果是,则非常欢迎使用片段或样本.
android background-service android-service google-play-services
有一种服务可以听取一些声音.如果语音匹配字符串,则在服务对象中调用某个方法.
public class SpeechActivationService extends Service {
public static Intent makeStartServiceIntent(Context pContext){
return new Intent(pContext, SpeechActivationService.class);
}
//...
public void onMatch(){
Log.d(TAG, "voice matches word");
}
//...
}
Run Code Online (Sandbox Code Playgroud)
这就是我在我的活动中启动服务的方式:
Intent i = SpeechActivationService.makeStartServiceIntent(this);
startService(i);
Run Code Online (Sandbox Code Playgroud)
从这个服务方法,我如何调用驻留在activity对象中的方法?我不希望从活动到服务的访问,而是从服务到活动.我已经阅读过有关处理程序和广播公司的内容,但无法找到/理解任何示例.有任何想法吗?
我一直在努力思考将Android服务放在新的Android推荐架构中的位置.我提出了许多可能的解决方案,但我无法决定哪一个是最好的方法.
我做了很多研究,我找不到任何有用的指导方针或教程.我发现关于将服务放置在我的应用程序架构中的唯一提示是@JoseAlcerreca Medium post
理想情况下,ViewModels不应该对Android有任何了解.这提高了可测试性,泄漏安全性和模块化.一般的经验法则是确保ViewModel中没有android.*导入(例如android.arch.*).这同样适用于演示者.
根据这一点,我应该将我的Android服务置于我的架构组件层次结构的顶层,与我的活动和碎片处于同一级别.这是因为Android服务是Android框架的一部分,所以ViewModels不应该知道它们.
现在,我将简要介绍一下我的场景,但只是为了让全景更清晰,而不是因为我想要这个特定场景的答案.
以下是我能想到的3种不同架构:
片段和AndroidService之间共享ViewModel

我很确定我应该将它们放在架构之上并将它们视为一个Activity/Fragment,因为BoundServices是Android Framework的一部分,它们由Android操作系统管理,并且它们与其他活动和片段绑定.在这种情况下,我不知道与LiveData,ViewModels和Activities/Fragments交互的最佳方式是什么.
有些人可能认为它们应该被视为一个数据源(因为在我的情况下,它使用蓝牙从一个规模获取数据),但我不认为这是一个好主意,因为我在上一段中所说的都是特别是因为它在这里所说的:
避免将应用的入口点(如活动, 服务和广播接收器)指定为数据源.相反,它们应该只与其他组件协调以检索与该入口点相关的数据子集.每个应用程序组件都是相当短暂的,具体取决于用户与其设备的交互以及系统的整体当前运行状况.
所以,最后,我的问题是:
我们应该在哪里放置我们的Android(绑定)服务以及它们与其他架构组件的关系?这些替代品中的任何一种都是好方法吗?
android android-service android-architecture android-architecture-components android-jetpack
我想从列表视图项的片段开始服务.我试图用以下方式呼叫服务:
startService(new Intent(getActivity(),myPlayService.class));
Run Code Online (Sandbox Code Playgroud)
但它根本不起作用.我如何从片段中调用我的服务?还有其他方法可以开始服务吗?
任何人都可以解释android中的未绑定和绑定服务之间的区别,并解释有意服务
谢谢
在服务中使用相机时,移动屏幕变得不可触摸(由透明窗口锁定)并且仅在出现错误之下
Access denied finding property "camera.hal1.packagelist"
Run Code Online (Sandbox Code Playgroud)
将是什么原因及其解决方案?请帮忙..
我一直在Android开发者网站上阅读以下文本,特别是在框架主题 - >服务 - >启动服务下.
在那里它陈述如下:
如果服务不提供绑定,则使用startService()提供的意图是应用程序组件与服务之间唯一的通信方式.但是,如果您希望服务返回结果,则启动服务的客户端可以为广播创建PendingIntent(使用getBroadcast())并将其传递给启动服务的Intent中的服务.然后,该服务可以使用广播来传递结果.
我有几个问题:
Services 和 IntentService s?Service; 然后,该服务可以使用广播来传递结果.以及所提到的广播将结果传递给原始客户/活动的位置?是否有一些方法应该被覆盖(比如onActivityResult())或什么?我正在使用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)
Run Code Online (Sandbox Code Playgroud)
我的服务文件中的第466行,其中空指针异常:
465 protected void onHandleIntent(Intent intent) {
466 Bundle data = intent.getExtras();
Run Code Online (Sandbox Code Playgroud)
该服务启动为:
serviceIntent = new Intent(this, MyService.class);
serviceIntent.putExtra("ip", ip);
serviceIntent.putExtra("port", port);
startService(serviceIntent);
Run Code Online (Sandbox Code Playgroud)
编辑:我现在意识到我可能会误用IntentServices.当我启动服务时,我从onHandleIntent()开始一些工作线程,即使在onHandleIntent()返回后也继续运行.并通过绑定到服务并调用成员函数/回调来与线程通信.我将研究使用更好的方法来为此目的使用服务,同时我仍然不明白传递的意图是如何为空.我只能怀疑Android系统自己使用null意图调用onHandleIntent,这似乎很奇怪.有人可以解释为什么android系统可能以这种方式调用它吗?
android android-intent android-service android-intentservice