#java #android
Вопрос:
Я получаю много таких ошибок:
android.app.RemoteServiceException:
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1772)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:193)
at android.app.ActivityThread.main (ActivityThread.java:6758)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:497)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:912)
Похоже, они происходят только на Android 8.1, 9, 10 и 11. Больше я ничего не вижу, кажется, это происходит на некоторых устройствах. Я везде искал ответ, но, похоже, никто точно не знает, в чем его причина. Я думаю, что это может быть что-то связанное с каналом уведомлений, но, возможно, и нет. Я пробовал startForeground()
и onCreate()
то, и onStartCommand()
другое, и это не имеет никакого значения. Я получаю эти ошибки в течение 5 лет в своем приложении, и я просто не могу воспроизвести их со своей стороны. Это мой сервисный код:
public static boolean service = false;
public static Context appContext;
public static Handler handler;
public static String notificationText;
@Override
public void onCreate() {
service = true;
appContext = getApplicationContext();
handler = new Handler();
setNotification();
if (notification != null) {
startForeground(1, notification);
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
public static void setNotification() {
try {
Intent intent = new Intent(appContext, MainActivity.class);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pIntent = PendingIntent.getActivity(appContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent intentStop = new Intent(appContext, broadcastReceiver.class);
PendingIntent pIntentStop = PendingIntent.getBroadcast(appContext, 0, intentStop, PendingIntent.FLAG_UPDATE_CURRENT);
notification = new NotificationCompat.Builder(appContext, "X")
.setContentTitle("App Title")
.setContentText(notificationText)
.setSmallIcon(R.drawable.ic_notification)
.setAutoCancel(false)
.setOngoing(true)
.setContentIntent(pIntent)
.addAction(0, "Stop", pIntentStop)
.build();
notification.defaults = 0;
NotificationManager notificationManager = (NotificationManager) appContext.getSystemService(NOTIFICATION_SERVICE);
if (notificationManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel("X", "App Title", NotificationManager.IMPORTANCE_DEFAULT);
notificationChannel.enableVibration(true);
notificationChannel.setVibrationPattern(new long[]{0});
notificationChannel.setSound(null, null);
notificationManager.createNotificationChannel(notificationChannel);
}
notificationManager.notify(1, notification);
}
} catch (Exception e) {
showToast(appContext, e.getMessage());
}
}
public static class broadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.stopService(new Intent(context, MainService.class));
}
}
У кого-нибудь есть хоть какое-то представление о том, что происходит? Спасибо!