android中暂停服务,Android暂停服务,线程,Asynctask?使用postdelayed的处理程序呢?...
我有后台服务(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的处理程序呢?...相关推荐
- 在 Android 中使用 Google Play 游戏服务登录出现12501 报错
在 Android 中使用 Google Play 游戏服务进行登录出现12501报错 添加Google Play服务 配置Google API控制台项目 配置AndroidManifest.xml ...
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家如果真正的有所兴趣,建议大家看看源码, ...
- 多态在android中(利用接口调用服务中方法)的应用
首先我们已经了解了java中多态的基本概念 1方法重载. 2向上转型,向下转型 今天我们主要讲向上转型在android中的应用范例. 在java中向上向下转型的图解: 重点:子类对象向上转型为父类对象 ...
- android中oncreate方法,android开发之onCreate( )方法详解
这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...
- android中倒计时动画,Android实现倒计时效果
本文实例为大家分享了Android实现倒计时效果的具体代码,供大家参考,具体内容如下 一个倒计时的效果 先看效果图: 直接上代码: 这里是关于倒计时 -天时分秒-的逻辑判断 /** * 倒计时计算 * ...
- android 中自定义安装,Android开发中ListView自定义adapter的封装
[引入] 我们一般编写listView的时候顺序是这样的: •需要展示的数据集List •为这个数据集编写一个ListView •为这个ListView编写一个Adapter,一般继承自BaseAda ...
- android中的滤镜,android 实现滤镜效果
最近在看关于自定义控件的东西,顺便看到了关于滤镜的东西,就写出来分享一下 这个有三个已知子类,写一个滤镜效果,只需要第一个已知子类就够用了,这个类构造方法public ColorMatrixColor ...
- android中的单例模式,Android中的单例模式
定义: 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 使用场景: 确保某一个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一 ...
- android 中dialog对话框,Android中的对话框dialog
普通对话框 单选对话框 多选对话框 进度条对话框 底部弹出框 1.普通对话框 this 代表当前类 最终继承Context 相当于是子类 getApplicationContext:直接返回的是Con ...
- android中textcolor属性,android – EditText和TextView textColorPrimary不遵循API lt;21的主题颜色...
在设计工具栏视图以使其适用于API 21及以下版本时存在一些问题,但我认为我有这个styles.xml @color/colorPrimary @color/colorPrimaryDark @col ...
最新文章
- (转)I 帧和 IDR 帧的区别
- EasyUI datagrid动态加载json数据
- python的全称_python名称空间介绍
- 絮语----工作四年的碎碎念
- jsp 特殊字符转义
- 阿里云上JDK安全证书的实际位置
- 2009年4月计算机网络原理,全国2009年4月高等教育自学考试计算机网络原理
- 7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程)
- python 比赛成绩预测_利用 Python 预测英雄联盟胜负,分析了 5 万多场比赛才得出的数据!值得,涨知识了!...
- 监控和调整Linux网络协议栈的图解指南:接收数据
- (转)mahout推荐引擎使用hadoop
- python中安装decimal模块_第38天:Python decimal 模块
- Git:git同步git push时候提示filename too long解决办法
- 单片机控制可控硅调压
- 树的计数 Prufer序列+Cayley公式
- 计算机开机后 打不开软件,电脑开机后软件打不开怎么回事
- 看董事长陈睿11周年演讲,一起了解B站未来的三个使命吧
- scratch和python怎么读_Python如何像scratch一样朗读文字?|python3教程|python入门|python教程...
- 如何使用 Web Workers 和 jsQR 在 Web 浏览器中扫描二维码
- 快速批量去除图片水印方法大全~~
热门文章
- [RHEL5企业级Linux服务攻略]--第9季 Squid服务全攻略之高级配置
- 简单网络管理协议(SNMP)实现linux系统信息网络监控
- 网站维护:利用iptables和ipset屏蔽恶意IP的访问
- bat遍历当前目录下的文件,批量重命名
- 区块链大热,和出版业如何发生关系?
- python knnsearch_sklearn之KNN详解+GridSearchCV使用方法
- Weka学习四(属性选择)
- 分享平时工作中那些给力的shell命令(更新版)
- 无法添加类型为“mimeMap”的重复集合项
- android 使用xml布局自己的对话框