我有后台服务(Service→Thread→Timer→Asynctask)。 Timer每5秒执行一次Asynctask。如果Asynctask返回true,则发送通知。Android暂停服务,线程,Asynctask?使用postdelayed的处理程序呢?

现在我希望服务在点击通知(意味着我在接下来的20秒内不会再收到另一个通知)后等待20秒。 什么“对象”需要在这里停止?据我所知,暂停Asynctasks并不是一个好主意。所以它可能是服务或线程的权利?使用postdelayed方法的Handler是最佳解决方案吗?

编辑2016年9月3日

public class NotifiyService extends Service {

String savedsa;

boolean value;

protected static final int DEFAULT_TIMEOUT = 5000;

protected static final int EXTENDED_TIMEOUT = 20000;

private HandlerThread mBgThread;

private Handler mBgHandler;

private MyTimerRunnable mRunnable;

@Override

public void onCreate() {

mBgThread = new HandlerThread("MyBgThread");

mBgThread.start();

mBgHandler = new Handler(mBgThread.getLooper(), (Handler.Callback) this);

mRunnable = new MyTimerRunnable();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

SharedPreferences sharedPreferences7 = getSharedPreferences("Prefsa",MODE_WORLD_READABLE);

savedsa = sharedPreferences7.getString("keysa","");

Toast.makeText(NotifiyService.this,getResources().getString(R.string.MonStarted)+ "\n" + savedsa,Toast.LENGTH_LONG).show();

mBgHandler.removeCallbacks(mRunnable);

mBgHandler.postDelayed(mRunnable,EXTENDED_TIMEOUT);

return START_STICKY;

}

@Override

public void onDestroy() {

//super.onDestroy();

mBgHandler.removeCallbacks(mRunnable);

mBgThread.quitSafely();

Toast.makeText(NotifiyService.this,getResources().getString(R.string.MonStopped), Toast.LENGTH_LONG).show();

}

private class MyTimerRunnable implements Runnable{

@Override

public void run() {

while(!value){

try {

URL url = new URL(savedsa);

HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

httpURLConnection.setRequestMethod("HEAD");

httpURLConnection.setConnectTimeout(3000);

httpURLConnection.setReadTimeout(3000);

httpURLConnection.connect();

value = true;

} catch (MalformedURLException e) {

e.printStackTrace();

value = false;

} catch (ProtocolException e) {

e.printStackTrace();

value = false;

} catch (IOException e) {

e.printStackTrace();

value = false;

}

if(value){

NotificationCompat.Builder builder = new NotificationCompat.Builder(NotifiyService.this);

builder.setSmallIcon(R.drawable.dummy);

Intent intent = new Intent(NotifiyService.this, Main2Activity.class);

intent.setAction(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntent pendingIntent = PendingIntent.getActivity(NotifiyService.this,0,intent,0);

builder.setContentIntent(pendingIntent);

builder.setLights(Color.YELLOW, 600, 600);

builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.dummy));

builder.setContentTitle(getResources().getString(R.string.newNotify));

builder.setContentText(getResources().getString(R.string.newNotify2));

builder.setAutoCancel(true);

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(1, builder.build());

}

mBgHandler.postDelayed(this,DEFAULT_TIMEOUT);}

}

}

@Override

public IBinder onBind(Intent intent) {

// TODO: Return the communication channel to the service.

return null;

}

}

android中暂停服务,Android暂停服务,线程,Asynctask?使用postdelayed的处理程序呢?...相关推荐

  1. 在 Android 中使用 Google Play 游戏服务登录出现12501 报错

    在 Android 中使用 Google Play 游戏服务进行登录出现12501报错 添加Google Play服务 配置Google API控制台项目 配置AndroidManifest.xml ...

  2. Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用

    关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家如果真正的有所兴趣,建议大家看看源码, ...

  3. 多态在android中(利用接口调用服务中方法)的应用

    首先我们已经了解了java中多态的基本概念 1方法重载. 2向上转型,向下转型 今天我们主要讲向上转型在android中的应用范例. 在java中向上向下转型的图解: 重点:子类对象向上转型为父类对象 ...

  4. android中oncreate方法,android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...

  5. android中倒计时动画,Android实现倒计时效果

    本文实例为大家分享了Android实现倒计时效果的具体代码,供大家参考,具体内容如下 一个倒计时的效果 先看效果图: 直接上代码: 这里是关于倒计时 -天时分秒-的逻辑判断 /** * 倒计时计算 * ...

  6. android 中自定义安装,Android开发中ListView自定义adapter的封装

    [引入] 我们一般编写listView的时候顺序是这样的: •需要展示的数据集List •为这个数据集编写一个ListView •为这个ListView编写一个Adapter,一般继承自BaseAda ...

  7. android中的滤镜,android 实现滤镜效果

    最近在看关于自定义控件的东西,顺便看到了关于滤镜的东西,就写出来分享一下 这个有三个已知子类,写一个滤镜效果,只需要第一个已知子类就够用了,这个类构造方法public ColorMatrixColor ...

  8. android中的单例模式,Android中的单例模式

    定义: 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 使用场景: 确保某一个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一 ...

  9. android 中dialog对话框,Android中的对话框dialog

    普通对话框 单选对话框 多选对话框 进度条对话框 底部弹出框 1.普通对话框 this 代表当前类 最终继承Context 相当于是子类 getApplicationContext:直接返回的是Con ...

  10. android中textcolor属性,android – EditText和TextView textColorPrimary不遵循API lt;21的主题颜色...

    在设计工具栏视图以使其适用于API 21及以下版本时存在一些问题,但我认为我有这个styles.xml @color/colorPrimary @color/colorPrimaryDark @col ...

最新文章

  1. (转)I 帧和 IDR 帧的区别
  2. EasyUI datagrid动态加载json数据
  3. python的全称_python名称空间介绍
  4. 絮语----工作四年的碎碎念
  5. jsp 特殊字符转义
  6. 阿里云上JDK安全证书的实际位置
  7. 2009年4月计算机网络原理,全国2009年4月高等教育自学考试计算机网络原理
  8. 7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程)
  9. python 比赛成绩预测_利用 Python 预测英雄联盟胜负,分析了 5 万多场比赛才得出的数据!值得,涨知识了!...
  10. 监控和调整Linux网络协议栈的图解指南:接收数据
  11. (转)mahout推荐引擎使用hadoop
  12. python中安装decimal模块_第38天:Python decimal 模块
  13. Git:git同步git push时候提示filename too long解决办法
  14. 单片机控制可控硅调压
  15. 树的计数 Prufer序列+Cayley公式
  16. 计算机开机后 打不开软件,电脑开机后软件打不开怎么回事
  17. 看董事长陈睿11周年演讲,一起了解B站未来的三个使命吧
  18. scratch和python怎么读_Python如何像scratch一样朗读文字?|python3教程|python入门|python教程...
  19. 如何使用 Web Workers 和 jsQR 在 Web 浏览器中扫描二维码
  20. 快速批量去除图片水印方法大全~~

热门文章

  1. [RHEL5企业级Linux服务攻略]--第9季 Squid服务全攻略之高级配置
  2. 简单网络管理协议(SNMP)实现linux系统信息网络监控
  3. 网站维护:利用iptables和ipset屏蔽恶意IP的访问
  4. bat遍历当前目录下的文件,批量重命名
  5. 区块链大热,和出版业如何发生关系?
  6. python knnsearch_sklearn之KNN详解+GridSearchCV使用方法
  7. Weka学习四(属性选择)
  8. 分享平时工作中那些给力的shell命令(更新版)
  9. 无法添加类型为“mimeMap”的重复集合项
  10. android 使用xml布局自己的对话框