私はまったくわからないと思うが、主なアクティビティがユーザのアクションやアンドロイドシステムによって破壊されてもサービスが持続するようにしたいと思う。アプリがある時点で再開されたら、bgアクティビティが存在するかどうかを確認し、アクションボタン、THXを使用して事前に停止したいと思うでしょう。アプリが実行中のアプリ一覧から閉じているときMainActivityが閉じられた後にサービスを停止する(EDITED)
私は、私はそれを停止し、それを再実行することができ、私のMainActivity
にバックグラウンドサービスを開始し、サービスが解消されない私は、閉じたアプリケーションを再起動したときに、問題があるANにしてみてくださいボタンを使ってサービスを停止する私は、アプリケーションがクラッシュしても、もはや参照がないサービスを停止しようとするため、クラッシュすることがあります。 BgServiceIntent
は、もはやこのサービスを指すので、私はこれを得るためのアプリを再開した後stopBg()
を呼び出す
private void startBg(){
if (!hasPermissions() || mScanning) {
return;
}
clearLogs();
BgServiceIntent = new Intent(MainActivity.this, BgScanService.class);
startService(BgServiceIntent);
}
private void stopBg(){
stopService(BgServiceIntent);
}
は、失敗しない:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: mobile.link.imbera.apsys.imberalink, PID: 20104
java.lang.NullPointerException
at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1568)
at android.app.ContextImpl.stopServiceCommon(ContextImpl.java:1628)
at android.app.ContextImpl.stopService(ContextImpl.java:1589)
at android.content.ContextWrapper.stopService(ContextWrapper.java:499)
at mobile.link.imbera.apsys.imberalink.MainActivity.stopBg(MainActivity.java:180)
at mobile.link.imbera.apsys.imberalink.MainActivity.lambda$onCreate$1$MainActivity(MainActivity.java:124)
at mobile.link.imbera.apsys.imberalink.MainActivity$$Lambda$1.onClick(Unknown Source)
at android.view.View.performClick(View.java:4463)
at android.view.View$PerformClick.run(View.java:18770)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5333)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
でこれを追加)します開始し、サービスを停止する –