我正在尝试创建一个后台服务,每隔“X”分钟咨询一个网络服务,如果响应“ok”在通知栏上生成一个通知
我不确定是否是 android 服务 o 广播接收器是我需要的东西
无论如何谢谢
我正在尝试创建一个后台服务,每隔“X”分钟咨询一个网络服务,如果响应“ok”在通知栏上生成一个通知
我不确定是否是 android 服务 o 广播接收器是我需要的东西
无论如何谢谢
NotificationManager似乎是您正在寻找的东西。
请不要每隔 X 分钟从网络服务中拉出一个页面——这会消耗很多电量,请使用Google Cloud Messaging(前 C2DM——Cloud To Device Messaging)来获取您的信息更新——它非常轻量级且非常高效并为所有应用程序共享一个现有数据连接。
首先,您需要一个广播接收器(在它自己的类中,加上清单中的一些代码),它对 USER_PRESENT 操作(当用户解锁屏幕时)或 BOOT_COMPLETED (当手机完成加载操作系统和所有其他东西时)做出反应. Boot激活Broadcast,广播启动服务。在服务的 onStartCommand() 方法中,每 X 分钟运行一次与 Web 服务的连接。您的服务应该实现 AsyncTask 以连接到 Web 服务。在该任务的 onCompleted() 方法中,您调用通知。
显现:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name="classes.myReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service android:name="classes.myService">
</service>
班级:
public class myReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
Intent service = new Intent(ctx, myService.class);
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)||intent.getAction().equals(Intent.ACTION_USER_PRESENT)||intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
ctx.startService(service);
}
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
ctx.stopService(service);
}
}
}
样本通知
private void showNotification() {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setContent(getNotificationContent());
notificationBuilder.setOngoing(true);
notificationBuilder.setTicker("Hello");
notificationBuilder.setSmallIcon(R.drawable.notif_icon);
mNotificationManager.notify(R.id.notification_layout, notificationBuilder.build());
}
private RemoteViews getNotificationContent() {
RemoteViews notificationContent = new RemoteViews(getPackageName(), R.layout.keyphrase_recogniser_notification);
notificationContent.setTextViewText(R.id.notification_title, "title");
notificationContent.setTextViewText(R.id.notification_subtitle, "subtitle");
return notificationContent;
}
这是一个广泛的指南,如果您需要更具体的代码,请告诉我们。