通过Android Studio安装的应用程序在启动时启动,但如果安装为.apk

时间:2015-10-01 19:48:14

标签: android mobile logcat mobile-application

我在清单

中有一个包含以下内容的应用
 <receiver android:name="com.redacted.BroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE"></action>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>



<activity android:name="com.redacted.activity.UserLaunch" android:label="@string/app_name" android:launchMode="standard" android:clearTaskOnLaunch="true" android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

如果我通过Android Studio安装并运行应用程序,然后重新启动手机,那么在启动后连接更改稳定后,广播接收器onReceive()会被调用。

但是,如果我构建一个.apk然后安装它,那么在设备重启时,onReceive()不会被调用。 (Log.d()中有一个onReceive语句,我在启动后在logcat中查找,它出现在第一个安装方法但不包含第二个安装方法。

为什么会出现这种差异?

1 个答案:

答案 0 :(得分:1)

应用程序安装在所谓的“停止状态”中。它需要一个明确的Intent启动应用程序的一个组件才能移出停止状态。通常,那是在运行启动器活动。在停止状态下,没有注册的广播接收器可以工作。

因此,当您从Android Studio运行时,启动器活动会将您的应用移出停止状态,一切都很好。通过其他方式安装将要求您自己运行启动器活动以退出停止状态。