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 ,