gpt4 book ai didi

Android:仅当我立即启动 App 时,Boot Complete 才有效

转载 作者:行者123 更新时间:2023-11-29 15:11:22 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中重置警报并使用接收器来获取 onBootCompleted。为了查看是否收到了 Intent ,我正在使用 toast 。仅当我立即打开应用程序时才会出现 toast 。否则, toast 不会出现。我查看了以前的问题,但几乎所有问题都涉及我没有使用的服务。我不确定这是否是问题的一部分。

Android list

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="internalOnly"
package="package.name" >

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:configChanges="orientation|screenSize|keyboardHidden"
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />

<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
</activity>
<receiver android:name=".AlarmReceiver" >
<intent-filter>
<action android:name="android.intent.action.ALARM_SERVICE" />
</intent-filter>
</receiver>
<receiver android:name=".AlarmReset"android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>

</application>

接收类

public class AlarmReset extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent)
{

Toast.makeText(context, "Hello! Got message",
Toast.LENGTH_LONG).show();
//reset alarms etc. No service set.
}

我还尝试将 list 接收器编写为

<receiver android:name=".AlarmReset" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

我在网上找到的要点是包括权限(我这样做了)和注意日志记录。

我不明白的是为什么如果我立即(在几秒钟内,否则 toast 不会出现)开始我的 Activity 但它会成功,否则会失败。我正在考虑测试一些可能性,比如通过代码启动 Activity 本身,或者像大多数其他人一样使用服务。我目前正在实际手机上测试 Android 4.4。

最佳答案

安装应用程序后,它处于停止状态。它的任何组件都不会被激活(例如您的 BOOT_COMPLETED 接收器),直到应用程序被用户启动移出此状态。这就是为什么您的应用只有启动一次才能运行。

请注意,从“设置”中强制停止应用程序也会使其进入此停止状态。

参见 this page有关更多详细信息(在页面中搜索“启动控件”)。

关于Android:仅当我立即启动 App 时,Boot Complete 才有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259002/

25 4 0