【发布时间】:2015-05-10 20:45:58
【问题描述】:
在我的应用程序中,我在活动 A 中创建了一个处理程序,而不是尝试从活动 B 中关闭它。但处理程序不会停止。 这是用户情景和我使用的代码;
- 用户设置通知
- 显示通知并创建处理程序
- 用户点击通知
- 另一个活动打开
- 用户点击按钮,处理程序停止
这就是我尝试这样做的方式(只有处理程序创建和停止部分,因为其余部分无关紧要)。
public class MyAlarmService extends Service {
public static Handler handler = new Handler();
public MyAlarmService() {
}
@Override
public IBinder onBind(Intent arg0)
{
// TODO Auto-generated method stub
return null;
}
@SuppressWarnings("static-access")
@Override
public void onStart(Intent intent, int startId)
{
super.onStart(intent, startId);
handler.postDelayed(runnable, 10000);
}
static Runnable runnable = new Runnable() {
@Override
public void run() {
sendmessage();
handler.postDelayed(this, 10000);
}
};
static public void stopRunnable (){
handler.removeCallbacks(runnable);
}
}
这就是我尝试停止处理程序的方式;
buttonStopCountDownTimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
runOnUiThread(new Runnable() {
@Override
public void run() {
MyAlarmService.stopRunnable();
}
});
}
});
有没有办法做到这一点?
【问题讨论】:
-
是的,使用
startService(new Intent(...).setAction(YOUR_ACTION_INT))之类的东西,然后在您的服务中,您将能够在方法onStartCommand()中获取命令 -
当我尝试用 stopRunnable 代替 YOUR_ACTION_INT 时,它没有显示在选项中