我是否需要 activity 来显示通知?
Do I need an activity just to show a notification?
我有一个应用程序只显示通知(使用 NotificationManager 创建)并显示 Toast,然后使用 finish()
退出(onCreate()
中的所有内容)。用例是当用户运行我的应用程序时,会显示一条通知,通过该通知可以实现某些操作。
为此我什至需要 activity 还是有更快的选择?它需要一些时间才能打开并且必须加载布局,尽管用户甚至看不到它。
您需要 Context
才能创建该通知。你可以使用例如Service
、Activity
、IntentService
或 BroadcastReceiver
等等。要创建 Toast,您还需要一个 Context
,那么您目前在哪里创建 Toast
和 Notification
?
您可以使用 android:theme="@android:style/Theme.NoDisplay"
在不加载布局的情况下尽可能快地制作 activity
Activity 不是强制性的。
一个例子
您可以有一个 BroadcastReceiver
来显示 Toast 消息。通过这种方式,您可以注册 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();
}
}
}
}
}
我有一个应用程序只显示通知(使用 NotificationManager 创建)并显示 Toast,然后使用 finish()
退出(onCreate()
中的所有内容)。用例是当用户运行我的应用程序时,会显示一条通知,通过该通知可以实现某些操作。
为此我什至需要 activity 还是有更快的选择?它需要一些时间才能打开并且必须加载布局,尽管用户甚至看不到它。
您需要 Context
才能创建该通知。你可以使用例如Service
、Activity
、IntentService
或 BroadcastReceiver
等等。要创建 Toast,您还需要一个 Context
,那么您目前在哪里创建 Toast
和 Notification
?
您可以使用 android:theme="@android:style/Theme.NoDisplay" 在不加载布局的情况下尽可能快地制作 activity
Activity 不是强制性的。
一个例子
您可以有一个 BroadcastReceiver
来显示 Toast 消息。通过这种方式,您可以注册 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();
}
}
}
}
}