android学习笔记(14)Status Bar Notification 状态栏、通知栏推送

本文详细介绍了如何在Android应用中利用StatusBarNotification功能,实现后台服务与用户之间的实时交互,通过发送动态通知来更新用户状态。通过示例代码展示了如何启动服务并根据服务进程的不同阶段显示不同的通知图标和文本信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Status Bar Notification 添加一个icon到系统状态栏中(可选择是否有文本信息),添加一段信息到Notification(通知栏)窗口中

当在后台运行的服务需要与用户进行交互时我们可以使用status bar notification

源码

MainActivity.java

package com.example1.examplestatusbar;

import android.net.sip.SipAudioCall.Listener;
import android.os.Bundle;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button)findViewById(R.id.btnstartservice);
        btn.setOnClickListener(listener);
    
    }
    //记住,如果没有复写onStart()中的内容的话,当你点击通知栏返回mainactivity后,status bar中的内容不会消失,如果熟悉activity生命周期的话就很容易理解这点
    @Override
	protected void onStart() {
		NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manager.cancel(R.layout.activity_main);
		super.onStart();
	}

	private OnClickListener listener =new OnClickListener() {
		
		@Override
		public void onClick(View arg0) {
			Intent intent = new Intent(MainActivity.this,StatusService.class);
			startService(intent);
			
		}
		
	};

}
StatusService.java

package com.example1.examplestatusbar;

import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class StatusService extends IntentService {

	public StatusService() {
		super("StatusService");
		
	}

	@Override
	protected void onHandleIntent(Intent arg0) {
		 		
		showNotification(false);
		try {
			Thread.sleep(10000);//模拟下载过程
			showNotification(true);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
			
	}

	private void showNotification(boolean finish) {
		Intent intent = new Intent(this,MainActivity.class);
		//理解不了,照着写就行。
		PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
		Notification notification = null;
		if (!finish) {
			notification = new Notification(R.drawable.ic_launcher, "开始下载", System.currentTimeMillis());
			//第一个参数是引用图标的位置
			notification.setLatestEventInfo(this, "下载", "正在下载中...", contentIntent);
		}
		else {
			notification = new Notification(R.drawable.ic_launcher, "下载完毕", System.currentTimeMillis());
			notification.setLatestEventInfo(this, "下载", "已经下载完毕...", contentIntent);
		}
		NotificationManager manager =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manager.notify(R.layout.activity_main,notification);
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值