关于Service使用startForeground()方法

这里需要记录一下startForeground使用的注意事项,示例代码来自于Repeater(RPT)源码 com.wudayu.repeater.services.PlayService,代码如下:

public void useForeground(CharSequence tickerText, String currSong) {
	Intent notificationIntent = new Intent(getApplicationContext(), MainActivity.class);
	PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, 0);
	/* Method 01
	 * this method must SET SMALLICON!
	 * otherwise it can't do what we want in Android 4.4 KitKat,
	 * it can only show the application info page which contains the 'Force Close' button.*/
	NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(PlayService.this)
			.setSmallIcon(R.drawable.ic_launcher)
			.setTicker(tickerText)
			.setWhen(System.currentTimeMillis())
			.setContentTitle(getString(R.string.app_name))
			.setContentText(currSong)
			.se
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,当使用`Context.startForegroundService()`启动服务后,必须在服务的`onCreate()`方法中调用`Service.startForeground()`方法,否则会报错`android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()`。这是因为在Android O(API级别26)及更高版本中,启动前台服务需要调用`startForeground()`方法来显示通知,以确保服务在后台运行时不会被系统杀死。 以下是一个示例代码,演示如何正确使用`Service.startForeground()`方法: ```java public class MyService extends Service { private static final int NOTIFICATION_ID = 1; @Override public void onCreate() { super.onCreate(); // 创建通知 Notification notification = new Notification.Builder(this) .setContentTitle("Foreground Service") .setContentText("Service is running in the foreground") .setSmallIcon(R.drawable.ic_notification) .build(); // 将服务设置为前台服务 startForeground(NOTIFICATION_ID, notification); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // 执行服务的逻辑操作 return START_STICKY; } @Override public void onDestroy() { super.onDestroy(); // 停止前台服务 stopForeground(true); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } } ``` 在上述示例中,我们在服务的`onCreate()`方法中创建了一个通知,并调用`startForeground()`方法将服务设置为前台服务。在服务的`onDestroy()`方法中,我们调用`stopForeground(true)`方法停止前台服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值