通知处理,也就是大家都熟悉的通知,比如说某某的下载已经结束,会提示下载结束等等
这样的实现,其实很简单。
1.首先要有一个线程,可是说是下载的线程(大部分人都把这个变成服务来做)
2.在线程开始的时候打出警告就ok了
下面我们就简单的实装一个
public class MainActivity extends Activity implements View.OnClickListener{ private static final int NOTE_ID = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("Post New Notification"); button.setOnClickListener(this); setContentView(button); } @Override public void onClick(View v) { handler.postDelayed(task, 10000); Toast.makeText(this, "Notification will post in 10 seconds", Toast.LENGTH_SHORT).show(); } private Handler handler = new Handler(); private Runnable task = new Runnable(){ @Override public void run() { NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); Intent launchIntent = new Intent(getApplicationContext(),MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, launchIntent, 0); Notification note = new Notification(R.drawable.ic_launcher,"Something Happened",System.currentTimeMillis()); note.setLatestEventInfo(getApplicationContext(), "Finished", "Click Here", contentIntent); note.defaults |= Notification.DEFAULT_SOUND; note.flags |= Notification.FLAG_AUTO_CANCEL; manager.notify(NOTE_ID, note); } }; }
上面的Activity是没有layout的,就是把button加入到界面。
代码 我不想解释什么,我想既然看到我博客的人,应该会明白到底去哪才能看到类的说明。
上面就是简简单单的时候了notification的功能。不过基本上用不了,因为在实际应用的时候,基本上都是拿服务的形式来做的。
下面我在做一个比较复杂的程序。
package com.java.chenhailong.notifyactivityman; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button startButton = (Button) findViewById(R.id.button1); Button stopButton = (Button) findViewById(R.id.button2); startButton.setOnClickListener(startListener); stopButton.setOnClickListener(stopListener); } private OnClickListener startListener = new OnClickListener() { public void onClick(View v) { startService(new Intent(MainActivity.this, NotificationChangeService.class)); } }; private OnClickListener stopListener = new OnClickListener() { @Override public void onClick(View v) { stopService(new Intent(MainActivity.this, NotificationChangeService.class)); } }; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
package com.java.chenhailong.notifyactivityman; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; import android.os.ConditionVariable; import android.os.IBinder; public class NotificationChangeService extends Service { private NotificationManager mNotificationManager; private ConditionVariable mCondition; @Override public IBinder onBind(Intent intent) { return null; } public void onCreate() { mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // サービスはメインスレッドで実行されるため、処理を止めないように更新処理を別スレッドに。 Thread thread = new Thread(null, mTask, "NotifyingService"); mCondition = new ConditionVariable(false); thread.start(); } private int WAIT_TIME = 5000;// 5秒単位 private Runnable mTask = new Runnable() { public void run() { for (int i = 0; i < 4; ++i) { showNotification(R.drawable.mini_circle, "丸を表示しています"); if (mCondition.block(WAIT_TIME)) break; showNotification(R.drawable.mini_rect, "三角を表示しています"); if (mCondition.block(WAIT_TIME)) break; showNotification(R.drawable.ruler_triangle, "音符を表示しています"); if (mCondition.block(WAIT_TIME)) break; } // アニメーションの終了、サービスを終了する NotificationChangeService.this.stopSelf(); } }; // ユニークなIDを取得するために、R.layout.mainのリソースIDを使います private static int NOTIFICATION_ID = R.layout.activity_main; private void showNotification(int drawableId, CharSequence text) { // 通知内容を決定 Notification notification = new Notification(drawableId, null, System.currentTimeMillis()); // PendingIntentはタイミングを指定したインテント // 今回はユーザーがnotificationを選択した時にActivityを起動 PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0); // notificationを設定 notification.setLatestEventInfo(this, "NotificationService", text, contentIntent); mNotificationManager.notify(NOTIFICATION_ID, notification); } @Override public void onDestroy() { // サービスの停止時、通知内容を破棄する mNotificationManager.cancel(NOTIFICATION_ID); // スレッドを停止するため、ブロックを解除 mCondition.open(); } }
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.java.chenhailong.notifyactivityman.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="NotificationChangeService"></service>
其他的文件我就不拷了,大家只要知道思想,我想会做出更加漂亮的程序来,我这个也就是个例子。
程序我也提供给大家,大家也可以实践一下。来看看Android的奇妙之处
相关推荐
下面是一个简单的创建Notification的步骤: ```java // 创建Notification渠道(Android O及以上版本需要) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String channelId = "your_channel_id"; ...
这个"Android 通知(notification)简单实用Demo"提供了一个基础的实现,包括点击功能,非常适合初学者理解和实践。 一、通知的基本结构 一个Android通知通常由以下几个部分组成: 1. **通知图标**:显示在状态栏...
创建一个简单的Notification通常需要以下步骤: 1. 创建Notification.Builder实例,设置通知的基本信息,如标题(title)、内容(text)、图标(icon)等。 ```java Notification.Builder builder = new ...
本篇文章将深入讲解如何在Android应用中简单实现Notification,并在用户点击通知时启动自定义的Activity。 首先,我们要了解Notification的基本结构。一个Notification通常包括图标、标题、内容文本以及可选的扩展...
在Android开发中,Toast和Notification是两种非常重要的用户交互组件,它们用于向用户显示短暂的信息提示。本资源“Android学习下 toast notification用法.rar”包含了有关如何在Android应用中使用这两种组件的源码...
在"AndroidDemo_020"这个示例中,可能包含了创建和展示简单Notification的代码,你可以通过查看源码进一步了解具体实现。 除了基本的用法,Notification还有许多高级特性: - **大图通知**:使用`setLargeIcon...
在Android系统中,Notification是一种非常重要的机制,它允许应用程序在状态栏显示消息,即使用户不在应用界面也能接收到信息提示。本资源“Android高级应用源码-实现Notification的通知栏常驻.rar”提供了一套实现...
在安卓开发中,Notification是应用与用户交互的重要方式,它能够在状态栏显示消息,即使用户不在应用程序中,也能提醒用户有新的活动或信息。...同时,要注意遵守Android的最佳实践,避免滥用常驻通知,以免打扰用户。
#### 二、Notification简单实例 **1. 如何制作Notification程序** - **链接**: [http://www.apkbus.com/android-51689-1-1.html](http://www.apkbus.com/android-51689-1-1.html) - **内容概述**: 本教程提供了...
通过"android Toast and Notification完整代码(练习用)"的压缩包文件`ToastAndNotification`,你可以学习到如何在实际项目中灵活运用这两种机制,包括不同类型的`Notification`构建和自定义`Toast`样式等实践案例...
通过分析和学习这个项目的源码,你可以更好地理解和实践`Notification`的使用。 总之,`Notification`是Android应用与用户交互的关键工具,`NotificationManager`和`Notification.Builder`简化了创建和管理通知的...
在Android编程中,Notification是应用与用户交互的重要方式,即使应用在后台运行或者完全关闭,也能提醒用户有新的事件需要处理。...理解并熟练运用Notification的各种特性和最佳实践,是每个Android开发者必备的技能。
在"疯狂Android中有关Notification的简单例子"这个主题中,我们将深入探讨`Notification`的基本概念、创建过程以及相关的使用技巧。 首先,我们要明白`Notification`的作用。在繁忙的手机屏幕上,`Notification`能...
在Android开发中,状态栏通知(Notification)是与用户交互的一种常见方式,它可以在不干扰用户当前活动的情况下向用户传达信息。本示例是关于如何使用Android Studio创建一个简单的状态栏通知的演示。通过理解并...
在Android开发中,Toast和Notification是两种非常重要的用户反馈机制,它们用于向用户显示简短的信息或提醒。本文将深入探讨这两个概念,并提供完整的代码示例。 **1. Android Toast** Toast是Android系统中一种...
在Android开发中,Notification是应用与用户交互的重要方式之一,特别是在后台运行时,它能向用户提供...通过本讲座提供的"013_android之消息提示 notification 介绍",你将能够深入学习这一主题,并在实践中灵活运用。
Android的通知栏具有多种样式,包括简单文本、带有图标、包含按钮等。通过`NotificationCompat.Builder`类,我们可以创建不同样式的通知。例如,设置标题(`setContentTitle`)、内容(`setContentText`)、小图标...
本资源"状态栏Notification简单Demo.rar"提供了一个关于如何在Android应用中实现通知栏消息推送的实例。由于无法逐一验证所有代码,这里将详细介绍`Notification`的基本使用方法和核心概念,帮助开发者理解和学习。 ...
在Android开发中,Notification是一种非常重要的组件,它用于在用户界面之外向用户显示信息,即使应用在后台运行或用户没有直接与应用交互时也能提醒用户。"Notification小例子"是针对这一主题的一个示例项目,旨在...