Caused by java.lang.IllegalStateException Not allowed to start service Intent { cmp=com.x.x.x/.x.x.x...

本文探讨了Android 8.0中后台服务启动限制,当应用尝试在不允许的情况下使用startService(),会抛出IllegalStateException。提供了解决方案,包括使用startForegroundService()及在服务中调用startForeground()。
Caused by java.lang.IllegalStateException
Not allowed to start service Intent { cmp=com.x.x.x/.x.x.xService }: app is in background uid UidRecord{7d9f297 u0a184 SVC bg:+15m25s900ms idle change:uncached procs:3 seq(0,0,0)}
 
Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用 startService() 函数,则该函数将引发一个 IllegalStateException。 新的 Context.startForegroundService() 函数将启动一个前台服务。现在,即使应用在后台运行, 系统也允许其调用 Context.startForegroundService()。不过,应用必须在创建服务后的五秒内调用该服务的 startForeground() 函数。
 

解决方法:
1. 修改启动方式

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    context.startForegroundService(intent);
} else {
    context.startService(intent);
}

2. 并且在service里再调用startForeground方法,不然就会出现ANR

context.startForeground(SERVICE_ID, builder.getNotification());

 https://stackoverflow.com/questions/46445265/android-8-0-java-lang-illegalstateexception-not-allowed-to-start-service-inten

app is in background uid UidRecord问题原因分析

https://www.cnblogs.com/mingfeng002/p/10725364.html

转载于:https://www.cnblogs.com/mingfeng002/p/9647720.html

android 非系统级应用被后台拉起service,提示12-03 17:00:04.575 15233 15233 E AndroidRuntime: java.lang.RuntimeException: Unable to create application com.ts.carplay.app.CarPlayApplication: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.ts.carplay.app/.service.CarPlayRemoteService }: app is in background uid UidRecord{7a29c58 u10a103 CEM idle change:idle|cached procs:1 seq(0,0,0)} 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6757) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.ActivityThread.access$1300(ActivityThread.java:241) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1927) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.os.Looper.loop(Looper.java:227) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7701) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:610) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.ts.carplay.app/.service.CarPlayRemoteService }: app is in background uid UidRecord{7a29c58 u10a103 CEM idle change:idle|cached procs:1 seq(0,0,0)} 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1718) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.ContextImpl.startService(ContextImpl.java:1673) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.content.ContextWrapper.startService(ContextWrapper.java:720) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at com.ts.carplay.app.CarPlayApplication.onCreate(CarPlayApplication.java:63) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1210) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6752) 12-03 17:00:04.575 15233 15233 E AndroidRuntime: ... 8 more 12-03 17:00:04.689 15259 15259 E AndroidRuntime: FATAL EXCEPTION: main 12-03 17:00:04.689 15259 15259 E AndroidRuntime: Process: com.ts.carplay.app, PID: 15259
最新发布
12-11
---------------------------- PROCESS STARTED (4049) for package com.example.text ---------------------------- 2025-08-13 16:37:55.834 4049-4049 nativeloader com.example.text D Configuring clns-7 for other apk /data/app/~~WCNvV5k3N06w3BNSEhMbLw==/com.example.text-ptlyfexyOl6oNzrAuTtjOw==/base.apk. target_sdk_version=36, uses_libraries=, library_path=/data/app/~~WCNvV5k3N06w3BNSEhMbLw==/com.example.text-ptlyfexyOl6oNzrAuTtjOw==/lib/x86_64:/data/app/~~WCNvV5k3N06w3BNSEhMbLw==/com.example.text-ptlyfexyOl6oNzrAuTtjOw==/base.apk!/lib/x86_64, permitted_path=/data:/mnt/expand:/data/user/0/com.example.text 2025-08-13 16:37:55.844 4049-4049 GraphicsEnvironment com.example.text V Currently set values for: 2025-08-13 16:37:55.844 4049-4049 GraphicsEnvironment com.example.text V angle_gl_driver_selection_pkgs=[] 2025-08-13 16:37:55.844 4049-4049 GraphicsEnvironment com.example.text V angle_gl_driver_selection_values=[] 2025-08-13 16:37:55.845 4049-4049 GraphicsEnvironment com.example.text V Global.Settings values are invalid: number of packages: 0, number of values: 0 2025-08-13 16:37:55.845 4049-4049 GraphicsEnvironment com.example.text V Neither updatable production driver nor prerelease driver is supported. 2025-08-13 16:37:55.968 4049-4049 AppCompatDelegate com.example.text D Checking for metadata for AppLocalesMetadataHolderService : Service not found 2025-08-13 16:37:56.215 4049-4049 om.example.text com.example.text W Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (unsupported, reflection, allowed) 2025-08-13 16:37:56.226 4049-4049 TransactionExecutor com.example.text E Failed to execute the transaction: tId:-655929506 ClientTransaction{ tId:-655929506 transactionItems=[ tId:-655929506 LaunchActivityItem{activityToken=android.os.BinderProxy@6d3cbb9,intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.text/.MainActivity },ident=260133464,info=ActivityInfo{f0592e9 com.example.text.MainActivity},curConfig={1.0 310mcc260mnc [en_US] ldltr sw411dp w411dp h914dp 420dpi nrml long port finger qwerty/v/v dpad/v winConfig={ mBounds=Rect(0, 0 - 1080, 2400) mAppBounds=Rect(0, 0 - 1080, 2400) mMaxBounds=Rect(0, 0 - 1080, 2400) mDisplayRotation=ROTATION_0 mWindowingMode=fullscreen mActivityType=undefined mAlwaysOnTop=undefined mRotation=ROTATION_0} as.2 s.18 fontWeightAdjustment=0},overrideConfig={1.0 310mcc260mnc [en_US] ldltr sw411dp w411dp h914dp 420dpi nrml long port finger qwerty/v/v dpad/v winConfig={ mBounds=Rect(0, 0 - 1080, 2400) mAppBounds=Rect(0, 0 - 1080, 2400) mMaxBounds=Rect(0, 0 - 1080, 2400) mDisplayRotation=ROTATION_0 mWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} as.2 s.2 fontWeightAdjustment=0},deviceId=0,referrer=com.android.shell,procState=2,state=null,persistentState=null,pendingResults=null,pendingNewIntents=null,sceneTransitionInfo=null,profilerInfo=null,assistToken=android.os.BinderProxy@7d8cf22,shareableActivityToken=android.os.BinderProxy@cb8bdb3,activityWindowInfo=ActivityWindowInfo{isEmbedded=false, taskBounds=Rect(0, 0 - 1080, 2400), taskFragmentBounds=Rect(0, 0 - 1080, 2400)}} tId:-655929506 ResumeActivityItem{mActivityToken=android.os.BinderProxy@6d3cbb9,procState=-1,updateProcState=false,isForward=true,shouldSendCompatFakeFocus=false} tId:-655929506 Target activity: com.example.text.MainActivity tId:-655929506 ] tId:-655929506 } 2025-08-13 16:37:56.226 4049-4049 AndroidRuntime com.example.text D Shutting down VM 2025-08-13 16:37:56.229 4049-4049 AndroidRuntime com.example.text E FATAL EXCEPTION: main Process: com.example.text, PID: 4049 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.text/com.example.text.MainActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4048) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4235) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:112) at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:174) at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:109) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:81) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2636) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8705) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886) Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. at androidx.appcompat.app.AppCompatDelegateImpl.setSupportActionBar(AppCompatDelegateImpl.java:606) at androidx.appcompat.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:181) at com.example.text.MainActivity.onCreate(MainActivity.kt:22) at android.app.Activity.performCreate(Activity.java:9002) at android.app.Activity.performCreate(Activity.java:8980) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1526) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4030) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4235) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:112) at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:174) at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:109) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:81) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2636) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8705) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886) 2025-08-13 16:37:56.239 4049-4049 Process com.example.text I Sending signal. PID: 4049 SIG: 9 ---------------------------- PROCESS ENDED (4049) for package com.example.text ---------------------------- 中文告诉无我问题
08-14
Java 中,当因填充错误导致无法调用 `Cipher` 而抛出 `IllegalStateException` 异常时,可以尝试以下解决办法: ### 1. 检查填充模式 确保使用的填充模式与加密算法和密钥长度兼容。不同的加密算法对填充模式有不同的要求。例如,使用 AES 算法时,常见的填充模式有 `PKCS5Padding`、`NoPadding` 等。如果数据长度恰好是块大小的整数倍,使用 `NoPadding` 可以避免填充问题,但需要确保数据本身已经满足块大小要求。 ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.SecureRandom; public class CipherExample { public static void main(String[] args) { try { // 生成 AES 密钥 KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(128, new SecureRandom()); SecretKey secretKey = keyGen.generateKey(); // 创建 Cipher 对象,指定填充模式 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); // 加密数据 byte[] input = "Hello, World!".getBytes(); byte[] encrypted = cipher.doFinal(input); System.out.println("Encrypted: " + bytesToHex(encrypted)); } catch (Exception e) { e.printStackTrace(); } } private static String bytesToHex(byte[] bytes) { StringBuilder result = new StringBuilder(); for (byte b : bytes) { result.append(String.format("%02x", b)); } return result.toString(); } } ``` ### 2. 检查数据长度 确保待加密的数据长度符合填充要求。某些填充模式要求数据长度必须是块大小的整数倍,如果不满足这个条件,会抛出填充错误。可以在加密前对数据进行填充,或者使用支持任意长度数据的加密模式。 ### 3. 检查密钥长度 确保使用的密钥长度与加密算法和填充模式兼容。不同的加密算法对密钥长度有不同的要求,例如 AES 支持 128 位、192 位和 256 位的密钥长度。如果密钥长度不符合要求,可能会导致填充错误。 ### 4. 捕获并处理异常 在代码中捕获 `IllegalStateException` 异常,并进行相应的处理。可以记录日志、提示用户或进行重试操作。 ```java try { // 加密操作 cipher.doFinal(input); } catch (IllegalStateException e) { System.err.println("填充错误: " + e.getMessage()); // 进行相应的处理 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值