GoAheadY 2012-12-13
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btn_start_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="start service" /> </LinearLayout
activity:
public class MainActivity extends Activity {
private Button btn_start_service; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_start_service=(Button)findViewById(R.id.btn_start_service); btn_start_service.setOnClickListener(clickListener); } private OnClickListener clickListener=new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,StatusService.class); startService(intent); } }; @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE); manager.cancel(R.layout.main);// 下载完成后,点击后,移除NotificationManager } }
services:
public class StatusService extends IntentService { private static final String TAG = "StatusService"; // private static final int KUKA = 0; public StatusService() { super("StatusService"); } @Override protected void onHandleIntent(Intent intent) { Log.i(TAG, "开始下载...."); showNotification(false);//开始下载 try { Thread.sleep(10000); showNotification(true);//下载完成 } catch (InterruptedException e) { e.printStackTrace(); } Log.i(TAG, "程序下载完毕"); } // finish下载是否完成 private void showNotification(boolean finish) { Notification notification; NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Intent intent = new Intent(this, MainActivity.class);//下拉点击执行的activity PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); if (!finish) { //图标 下载提示 时间 notification = new Notification(R.drawable.head, "开始下载", System.currentTimeMillis()); //显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象。 notification.setLatestEventInfo(this, "下载", "正在下载中", contentIntent); } else { notification = new Notification(R.drawable.head, "下载完毕", System.currentTimeMillis()); notification.setLatestEventInfo(this, "下载", "程序下载完毕", contentIntent); } //下载的默认声音 notification.defaults= Notification.DEFAULT_SOUND; //r.layout.main是为manager指定一个唯一的id manager.notify(R.layout.main, notification);//将自定义的notification放入NotificationManager } }
最后别忘记注册service
<service android:name=".StatusService"/>
更多详细介绍:
http://blog.csdn.net/qinjuning/article/details/6915482