【发布时间】:2021-12-30 07:59:28
【问题描述】:
我正在开发一个应用程序在此,我必须通过我已经完成的应用程序在 30-30 秒内发送 android 设备的当前状态。但我面临的问题是应用程序在启动完成后无法启动这个问题与某些 android 设备有关。
我的代码是:
public class BootCompletedReceiver extends BroadcastReceiver {
private static final String TAG = "BootCompletedReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"action : "+intent.getAction());
if (Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_BOOT_COMPLETED)){
Log.d(TAG,"receive boot completes : "+intent.getAction());
@SuppressLint("StaticFieldLeak")
AsyncTask task = new AsyncTask() {
@Override
protected Object doInBackground(Object[] objects) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
context.startForegroundService(new Intent(context, StatUpdateService.class));
}
};
task.execute();
}
}
}
清单文件:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<......./>
<receiver
android:name=".receiver.BootCompletedReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
列表项
在某些 android 设备上,此代码正在运行,并且我的应用程序在启动完成后启动,但在某些 android 设备上,它不工作。
【问题讨论】:
-
请检查可能是机器配置问题或支持的硬件和软件在您的 IIP 机器上可用。并检查两台 IIP 机器上的 android 版本。
-
请在 2022 年停止使用 AsyncTask...