当前位置:操作系统 > 安卓/Android >>

android清除通知栏消息

这近项目快到结尾了,经理要我处理一个问题,就是我们程序关闭后,程序发出通知 在状态栏上始终没有消除,需要手动的清楚,
体验效果极其不好,现在是想在程序推出后,把通知给消除了,琢磨了下,不知怎么清楚,看了下api 有清除的方法,后面安心多了
,但有出现毛病了,我什么调用通知管理器把通知消除啊,他是开一个一个服务中的,我们不能new 这个类,是系统的,当时想了下
决定发送广播清楚, 当程序退出的时候,调用该广播把消息清楚,等到快写完的时候,才发现,既然是系统调用的,系统肯定有结束的回调啊
立马想到了 ondesory()方法,因为我程序不管怎么退出,都会调用该方法,而且省了我很大的一笔功夫,代码也就一行!
 
写这个只想告诉自己,在应用系统的东西时候,我们应该遵循系统的规则进行游戏,该创建的时候就要创建,该释放的地方就要释放!
看来对系统的生命周期认识还不是很到位啊!
  说了这么多废话 ,也贴上测试代码 ,随便写的

package com.liao.notification; 
 
import java.util.ArrayList; 
 
import android.app.Activity; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.util.Base64; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
 
public class MainActivity extends Activity { 
    private int type ; 
    private String message ; 
    private NotificationManager notiManager; 
     
    Handler handler = new Handler(){ 
         
        public void handleMessage(Message msg) { 
            // TODO Auto-generated method stub 
            if(msg.what ==1){ 
                message = "type ====1"; 
                 
            }else if (msg.what == 2){ 
                message = "type ====2"; 
            } 
            notiManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
            Notification notification = new Notification(R.drawable.icon, 
                    "您有新消息" + type, System.currentTimeMillis()); 
            Intent intent = new Intent(); 
            intent.setClass(getApplicationContext(), ReciveActivity.class); 
            intent.putExtra("hello", "hello Dialog"); 
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
                    | Intent.FLAG_ACTIVITY_NEW_TASK); 
 
            PendingIntent pendingIntent = PendingIntent.getActivity( 
                    getApplicationContext(), 100, intent, 
                    PendingIntent.FLAG_UPDATE_CURRENT); 
            notification.setLatestEventInfo(getApplicationContext(), type + "", 
                    message, pendingIntent); 
            notiManager.notify(0, notification); 
             
        } 
    }; 
     
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
         
        LinearLayout layout = new LinearLayout(this); 
 
        Button button = new Button(this); 
        button.setText("测试notification1"); 
        button.setOnClickListener(new OnClickListener() { 
 
            public void onClick(View v) { 
                type = 1; 
                handler.sendEmptyMessage(1); 
            } 
        }); 
        Button button2 = new Button(this); 
        button2.setText("测试notification2"); 
        button2.setOnClickListener(new OnClickListener() { 
 
            public void onClick(View v) { 
                //              handler.sendEmptyMessage(2); 
                //              type= 2; 
                notiManager.cancel(0);// 调用他就行 这个0 和notiManager创建时候传入的0 是唯一的 ,所以可以根据他删除 
 
            } 
        }); 
        layout.addView(button); 
        layout.addView(button2); 
        setContentView(layout); 
         
    } 


摘自 android小益的专栏
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,