我在Android中设置了重复警报,从而触发了该活动。
该活动有两个按钮:“停止”和“延后”。当我单击“打no”时,警报被推迟到10分钟。
但警报在滑块窗口中,即处于恢复状态。 我想完全停止两个按钮上的警报。
public class RingAlarm extends Activity { MediaPlayer mp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ring_alarm); Intent in; in = getIntent(); String s=in.getStringExtra("habbit_id"); int col= in.getIntExtra("habbit_Color",0); ScrollView sv = (ScrollView)findViewById(R.id.sv_ra); if(col<0) { sv.setBackgroundResource(R.color.red); } if(col>0) { sv.setBackgroundResource(R.color.green); } if(col==0) { sv.setBackgroundResource(R.color.yellow); } System.out.println("alarm string" + s); TextView tv = (TextView)findViewById(R.id.habbit_ra); tv.setText(s); // mp = MediaPlayer.create(getApplicationContext(), R.raw.song1); //mp.start(); } public void onthecancelringclicked(View view){ //mp.stop(); int id=Process.myPid(); finish(); Process.killProcess(id); //System.exit(0); } public void onthesnoozeringclicked(View view){ //mp.stop(); long l=System.currentTimeMillis(); Intent i = this.getIntent(); Random r = new Random(); int ri =r.nextInt(1000000)+64; PendingIntent pi = PendingIntent.getActivity(this,ri,i,0 ); AlarmManager am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP,l+600000,pi); finish(); Process.killProcess(Process.myPid()); } }
我的XML文件是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" android:background="@color/background" > <TextView android:layout_width="match_parent" android:layout_height="50dp" android:text="@string/app_name" android:gravity="left|center" android:padding="7dp" android:background="@color/user_profile"/> <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/sv_ra"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center" android:id="@+id/habbit_ra" android:text="habbit_name"/> <AnalogClock android:text="time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:layout_gravity="center"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="bsy your self" android:layout_marginTop="20dp" android:gravity="center" android:id="@+id/habbit_message_ra"/> </LinearLayout> </ScrollView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="0" android:background="@color/user_profile"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.5" android:text="stop" android:background="@color/user_profile" android:onClick="onthecancelringclicked"/> <Button android:background="@color/user_profile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.5" android:text="snooze 10 min" android:onClick="onthesnoozeringclicked"/> </LinearLayout>
如您所见,我已经实现了Process.killProcess(pid)方法。我的警报仍然保存在导航抽屉中。我想从任何地方删除活动。
Process.killProcess(pid)
我对32个警报使用了相同的意图,因此我无法将未决意图的ID放置为意图,如putExtra。
在清单文件中触发的活动条目中添加以下行。
android:excludeFromRecents="true"
这不会使该活动进入最近状态,并且调用完成将导致该活动结束。