編輯:關於Android編程
這個應用實現了簡單的鬧鐘功能,關閉程序的狀態中也可以進行鬧鐘的提醒。
這裡遺留了一個問題:
如果我通過應用本身關閉程序,是可以實現我上述所說的功能,但是如果我在手機進程管理中實現應用程序的關閉操作,這個提醒就不起作用了,我很疑惑的是,我通過應用程序本身關閉了後,在進程中也是查看不到這個應用了的。所以哪位知道的幫留個言指點下,謝謝。
ClockDemo.java
package com.example.clock; import java.util.Calendar; import android.app.Activity; import android.app.AlertDialog; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.TimePicker; public class ClockDemo extends Activity { private Button mSet; Calendar mCalendar = Calendar.getInstance(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ObjectPool.mAlarmHelper = new AlarmHelper(this); mSet = (Button) findViewById(R.id.mSet); setListener(); } public void setListener() { mSet.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mCalendar.setTimeInMillis(System.currentTimeMillis()); int mHour = mCalendar.get(Calendar.HOUR_OF_DAY); int mMinute = mCalendar.get(Calendar.MINUTE); new TimePickerDialog(ClockDemo.this, new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mCalendar.setTimeInMillis(System .currentTimeMillis()); mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); mCalendar.set(Calendar.MINUTE, minute); mCalendar.set(Calendar.SECOND, 0); mCalendar.set(Calendar.MILLISECOND, 0); ObjectPool.mAlarmHelper.openAlarm(32, "ddd", "ffff", mCalendar.getTimeInMillis()); } }, mHour, mMinute, true).show(); } }); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { showBackDialog(); return true; } return super.onKeyDown(keyCode, event); } /** Give the tip when exit the application. */ public void showBackDialog() { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示") .setIcon(R.drawable.icon) .setMessage("是否退出?") .setPositiveButton("sure", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { System.exit(0); android.os.Process .killProcess(android.os.Process.myPid()); dialog.dismiss(); } }) .setNegativeButton("cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog ad = builder.create(); ad.show(); } }
AlarmHelper.java
package com.example.clock; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; public class AlarmHelper { private Context c; private AlarmManager mAlarmManager; public AlarmHelper(Context c) { this.c = c; mAlarmManager = (AlarmManager) c .getSystemService(Context.ALARM_SERVICE); } public void openAlarm(int id, String title, String content, long time) { Intent intent = new Intent(); intent.putExtra("_id", id); intent.putExtra("title", title); intent.putExtra("content", content); intent.setClass(c, CallAlarm.class); PendingIntent pi = PendingIntent.getBroadcast(c, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, pi); } public void closeAlarm(int id, String title, String content) { Intent intent = new Intent(); intent.putExtra("_id", id); intent.putExtra("title", title); intent.putExtra("content", content); intent.setClass(c, CallAlarm.class); PendingIntent pi = PendingIntent.getBroadcast(c, id, intent, 0); mAlarmManager.cancel(pi); } }
CallAlarm.java
package com.example.clock; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class CallAlarm extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { intent.setClass(context, AlarmAlert.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } }
AlarmAlert.java
package com.example.clock; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; public class AlarmAlert extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new AlertDialog.Builder(AlarmAlert.this) .setIcon(R.drawable.clock) .setTitle("ddd") .setMessage("fff") .setPositiveButton("ddd", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { System.exit(0); android.os.Process .killProcess(android.os.Process.myPid()); } }).show(); } } ObjectPool.java public class ObjectPool { /** The alarm object. */ public static AlarmHelper mAlarmHelper; }
看了那麼多,估計某些人又嫌煩了,我只貼上代碼的目的是希望大家能看代碼,而不是電腦上下了一個又一個的源文件,只知道用而不關心其中的技術點,這樣就不能舉一番三了。
源碼下載:http://xiazai.jb51.net/201607/yuanma/ClockDemo(jb51.net).rar
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
輪播圖是很常用的一個效果 核心功能已經實現 沒有什麼特殊需求 自己沒事研究的 所以封裝的不太好 一些地方還比較糙 為想要研究輪播圖的同學提供個參考目前測試圖片為mipma
1.一些BB上節我們把簡單的項目搭起來了,然後把倉庫托管到Github上了,經過分析,我們覺得有必要把下面兩點優化下: 1.URL寫死 -> 解析接口返回的Json
我們的手機通訊錄一般都有這樣的效果,如下圖:OK,這種效果大家都見得多了,基本上所有的android手機通訊錄都有這樣的效果。那我們今天就來看看這個效果該怎麼實現。一.概
本文實例為大家分享了Android普通購物車制作過程,供大家參考,具體內容如下1.最新項目新增了類似購物車功能,如下圖所示:當時剛看到此頁面的時候,第一反應是利用 Lis