Articles of android service

沉默的谷歌登录android后台服务

我在我的Android应用程序中运行后台服务。 我使用我从登录活动获得的IdToken来在后端服务器上进行身份validation。 该服务正在START_STICKY模式下运行,因此即使应用程序关闭,服务仍会在后台运行以从后端服务器获取任何通知。 我面临的问题是当IdToken过期时,我无法在服务中更新它。 如果令牌已过期,则回调函数不会收到任何结果。 如果令牌尚未过期,它会立即获得结果。 这是signIn函数和handleSignIn函数的代码。 private void signIn() { new Thread(new Runnable() { public void run() { GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestIdToken(“”) .build(); GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(context) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); OptionalPendingResult opr = Auth.GoogleSignInApi.silentSignIn (mGoogleApiClient); if (opr.isDone()) { // If the user’s cached credentials are valid, the OptionalPendingResult will be […]

Firebase + Android – Notifications ChildAdded – 如何只获得New Childs?

我正在尝试在我的应用中设置一个Android服务,用于在Firebase Ref中侦听新的Childs,并在发生这种情况时抛出通知。 我遇到了问题,因为addChildEventListener onChildAdded显然是为每个现有记录调用一次,然后才实际侦听新的子节点。 在这个答案中, @ kato声明如果调用addChildEventListener ,如ref.endAt().limit(1).addChildEventListener(…) ,它将只获得新添加的记录。 它实际上一次只能获得一条记录(我认为有limit(1) )但在收听添加的记录之前它仍然会获得一条记录。 这是一些代码: 在onCreate()中初始化监听器: @Override public void onCreate() { super.onCreate(); this.handler = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { AllowedGroup ag = dataSnapshot.getValue(AllowedGroup.class); postNotif(“Group Added!”, ag.getName()); } …rest of needed overrides, not used… 我正在使用AllowedGroup.class来存储记录,并使用postNotif来构建和发布通知。 这部分按预期工作。 然后, onStartCommand() : @Override public int onStartCommand(Intent […]

如何在服务中正确调用startIntentSenderForResult?

我正在开发一个获取位置的Service ,我正在使用Google Play服务。 根据http://developer.android.com/reference/com/google/android/gms/common/ConnectionResult.html#hasResolution%28%29 ,如果hasResolution()返回true ,则调用startResolutionForResult可能会解决错误。 但它需要一个Activity作为第一个参数。 当然, ConnectionResult通过getResolution()返回PendingIntent ,但Service没有像Activity那样的startIntentSenderForResult() 。 据我所知,没有办法在Service获得结果。 如何在Service获得结果? 还是有其他正确的方法吗? 编辑: Google Play服务SDK为后台任务提供GooglePlayServicesUtil.showErrorNotification 。 当然接受的答案是很好的解决方案。 编辑2: showErrorNotification仅适用于isGooglePlayServicesAvailable的返回值。

bindService()之后没有创建(或连接)服务

我有这个简单的服务,广播用户的当前位置。 我想使用绑定机制来控制服务生命周期,但服务只是没有启动。 我做错了什么? public class GPSActivity extends ListActivity { … protected void onResume() { super.onResume(); Log.i(“Service”, “Service bound”); Intent intent = new Intent(this, LocationService.class); bindService(intent, service_connection , Context.BIND_AUTO_CREATE); } protected void onPause() { if (dataUpdateReceiver!=null) unregisterReceiver(dataUpdateReceiver); unbindService(service_connection); super.onPause(); } class LocationServiceConnection implements ServiceConnection{ public void onServiceConnected(ComponentName name, IBinder service) { Log.i(“Service”, “Service Connected”); } public […]

使用Camera2 API从服务录制video

我在一些我无法测试的手机上遇到问题(这是第一个问题)我正在尝试构建一个可以从camera2 API录制的服务。 但是当我将应用程序发送到后台时,在某些手机上似乎有一些我目前无法解决的问题。 我只有日志,无法弄清楚应用程序无法正常工作的主要原因。 由于这个类太大而不能在这里显示为代码,你可以在这里find它: https : //github.com/Astyan42/RecordingService/blob/master/RecordingService.java 这是给定的日志文件: https : //github.com/Astyan42/RecordingService/blob/master/logcat.txt 感谢您的帮助

Android O:服务未被后台执行限制停止

我在Android O上运行后台Service遇到一种奇怪的行为。 我的示例应用使用了targetSdkVersion 26 我有一个简单的服务,只打印出一些状态信息,并使用START_STICKY重新创建: class ServiceTest : Service() { companion object { private val TAG = “ServiceTest” fun buildIntent(context: Context): Intent { return Intent(context, ServiceTest::class.java) } } override fun onBind(p0: Intent?): IBinder? { return null } override fun onCreate() { super.onCreate() Log.d(TAG, “onCreate”) } override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { […]

将REST服务与Android应用程序同步

有一个REST服务,我用它填充我的数据库中的信息,我的应用程序稍后使用它。 我已经阅读了几个关于这个问题的线程,现在必须决定我希望REST服务和我的数据库之间的同步如何工作。 想象一个应用程序从谷歌财务API获取有关股票的信息并将其存储在数据库中,在应用程序启动时显示信息,并在股票价格中发生特定事件时发送通知。 我已经实现了AsyncTask的简单选项,该选项在用户手动请求同步时启动。 现在我必须实现自动同步,这些是我find的选项: 创建将执行同步的服务 使用同步适配器/同步提供程序 所以我发现第二个选项有很多优点,特别是在本video中解释的那些,但也有两个主要缺点: 我找不到关于android同步的好文档( 这些文章中的一些第三方文章,但没有官方Google或Android开发人员指南) 根据这篇文章搞乱同步适配器可能会导致操作系统崩溃和重启等重大问题。 我发现的大部分信息都很旧,所以也许事情已经发生了变化,但我的应用程序应该使用API​​级别8及以上,所以我非常感谢任何建议和有价值文档的链接。

如何在我的Android应用程序中处理进程间通信的必要性?

我的申请要求我定期执行以下操作: 每15秒向服务器发送一次定期心跳信息 定期进行屏幕捕获并将其发送到服务器,每60秒一次 每隔5秒发送一次消息并在服务器上轮询消息 我已经为上面列出的每个项目编写了服务,但这里是我需要帮助的地方,这些服务之间的沟通…… 心跳服务需要能够: 从屏幕捕获服务获取一些信息。 使用消息传递服务对消息进行排队。 屏幕捕获服务需要能够执行以下操作: 从我的应用程序中获取当前活动 使用消息传递服务对消息进行排队。 消息传递服务需要能够执行以下操作: 接收要排队的消息,以便从我的应用程序/服务发送到服务器 将从服务器收到的消息发送到应用程序 有了所有需要的沟通途径,我想知道如何做到这一点? 我只是将我的应用程序绑定到所有服务吗? 将服务绑定到其他服务? 使用其他一些来自沟通? 即使我的应用程序不在前台,我也需要所有这些服务继续运行/运行。

AVD没有运行

今天当我使用android studio进行项目时,突然出现蓝屏,系统自动重启。 现在当我尝试使用模拟器运行我的应用程序时,AVD没有运行,我收到如下错误。 以前有人面对这个吗? 我该如何解决? ProcessNotCreatedException:启动AVD时出现意外错误:无法运行程序“C:\ Users \ tongws \ AppData \ Local \ Android \ sdk \ tools \ emulator.exe”:CreateProcess error = 216,此版本的%1与版本不兼容你正在运行的Windows。 检查计算机的系统信息,以查看是否需要x86(32位)或x64(64位)版本的程序,然后与软件发行商联系 我点击了Android设备监视器,也没有发生任何事情……

如何实现Facebook“新故事”function等function?

我想在我的应用程序中实现以下function。 我怎样才能做到这一点? 我有两种方式: 每1分钟或一段时间后从网络服务获取总post数。 但为此我需要在后台连续运行一个Thread ,否则可能会出现性能问题 。(电池性能) 我可以使用Notification服务执行此function吗? 或者如果有人有其他想法,请建议我。