电话锁定时启动活动时服务不绑定

时间:2018-03-06 07:27:50

标签: android service kotlin android-wake-lock

我收到了推送通知,并在onMessageReceived中调用了一个活动。

val i = Intent()
i.setClass(this, PreCallActivity::class.java!!)
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
val callRequest = CallParser.convertRemoteMessageToCallReq(remoteMessage)
i.putExtra(PreCallActivity.EXTRA_CALL_TYPE, "incoming")
i.putExtra(PetZamPubnubService.EXTRA_CALL_REQUEST, callRequest)
startActivity(i)

在onCreate中我设置了一些标志并获得了一个唤醒锁

this.window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN or
        WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
        WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
            WindowManager.LayoutParams.FLAG_FULLSCREEN or
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)
setContentView(R.layout.activity_pre_call)

val pm = getSystemService(Context.POWER_SERVICE) as PowerManager
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG_WAKE_LOCK)
wl?.acquire()

我绑定并启动服务

val intent = Intent(this@PreCallActivity, MyPubnubService::class.java)
startService(intent)
bindService(intent, pubnubServiceConn, Context.BIND_AUTO_CREATE)

我遇到的问题是,当应用程序来自被杀死的手机或显示器已关闭时,我无法访问我的服务并给予我。

kotlin.KotlinNullPointerException
at com.myapp.myapp.push.PubnubServiceConn.publishMessage(PubnubServiceConn.kt:147)
at com.myapp.myapp.push.PubnubServiceConn.publishCallRejected(PubnubServiceConn.kt:80)
at com.myapp.myapp.videocall.PreCallActivity$enableInComingControls$2.onClick(PreCallActivity.kt:216)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我的问题是,我应该采取哪些具体措施来确保我的服务是从LOCKED / OFF手机正确启动而且应用已被杀死?

我已经测试了以下方案,应用程序运行正常

  1. App in Foreground
  2. 背景中的应用
  3. 背景和屏幕中的应用程序已锁定/关闭
  4. 应用已被杀,屏幕已开启

0 个答案:

没有答案