我是否需要一项活动才能显示通知?

时间:2016-07-14 14:02:21

标签: android android-activity android-notifications

我有一个只显示通知的应用(使用NotificationManager创建)并显示Toast,然后退出onCreate()({{1}}中的所有内容)。用例是当用户运行我的应用程序时,会显示一个通知,通过该通知可以实现某些操作。

我是否甚至需要一项活动,还是有更快的选择?它需要一些时间才能打开,并且必须加载布局,尽管用户甚至看不到它。

3 个答案:

答案 0 :(得分:1)

您需要Context来创建该通知。你可以用例如一个ServiceActivityIntentServiceBroadcastReceiver等等。要创建Toast,您还需要Context,那么您目前在哪里创建ToastNotification

答案 1 :(得分:1)

你可以使用android:theme =“@ android:style / Theme.NoDisplay” 在不加载布局的情况下尽可能快地制作活动

答案 2 :(得分:0)

活动不是强制性的。

示例

例如,您可以拥有显示Toast消息的BroadcastReceiver。这样,您可以注册BroadcastReceiver以收听您想要的事件(如传入短信,启动完成等)并在事件发生时显示祝酒......

在下面的示例中,您将在收到短信后显示Toast(无论用户是否打开了您的应用)。

<强>的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    ...
    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

    <application>
        ....
        <receiver android:name=".MyCustomBroadcastReceiver">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

<强> MyCustomBroadcastReceiver.java

public class MyCustomBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent != null) {
            String action = intent.getAction();
            if(action != null) {
                if(action.equals("android.provider.Telephony.SMS_RECEIVED")) {
                    Toast.makeText(context, "SMS Received", Toast.LENGTH_LONG).show();
                } 
            }
        }
    }
}