博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IntentService下载任务
阅读量:5038 次
发布时间:2019-06-12

本文共 1907 字,大约阅读时间需要 6 分钟。

onHandleIntent开启一个线程按顺序处理任务,不适合做大量任务

public class MainActivity extends AppCompatActivity {    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ImageView imageView = (ImageView) findViewById(R.id.image);        Intent intent = new Intent(MainActivity.this, MyIntentService.class);        intent.putExtra("path", "http://www:xxx.xxx");        startService(intent);        startService(intent);        startService(intent);    }            }

开启3个任务,排队执行,过后服务自动销毁,所以不要stopService

public class MyIntentService  extends IntentService {    private static final String TAG = "TAG";    public MyIntentService() {        super("MyIntentService");        Log.d(TAG, "MyIntentService: " + Thread.currentThread().getName());    }    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        Log.d(TAG, "onStartCommand: ");        return super.onStartCommand(intent, flags, startId);    }    @Override    protected void onHandleIntent( Intent intent) {        //耗时操作  不用再单独的开启线程        Log.d(TAG, "MyIntentService: " + Thread.currentThread().getName());        String path = intent.getStringExtra("path");        System.out.println(TAG+path);        downloadTask(path);    }    private void downloadTask(String path) {        Log.d(TAG, "downloadTask: ");        try {            Thread.sleep(3 * 1000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }    /**     * 当某个请求需要处理时,这个方法会在工作者线程被调用     * 一次仅仅会有一个请求被处理,但是处理过程会运行在工作者线程(独立于其他应用程序逻辑运行)。     * 因此,如果某段代码需要执行很长时间,它会阻塞住其他提交到该IntentService的请求     * ,但是不会阻塞住其他任何东西。当所有的请求被处理完成之后,IntentService会停止它自身,     * 因此你不应该手动调用stopSelf()方法。     */    @Override    public void onDestroy() {        Log.d(TAG, "onDestroy: ");        super.onDestroy();    }}

 

转载于:https://www.cnblogs.com/Ocean123123/p/11021986.html

你可能感兴趣的文章
mysql 优化
查看>>
读书笔记 ~ Nmap渗透测试指南
查看>>
WCF 配置文件
查看>>
动态调用WCF服务
查看>>
oracle导出/导入 expdp/impdp
查看>>
类指针
查看>>
css修改滚动条样式
查看>>
2018.11.15 Nginx服务器的使用
查看>>
Kinect人机交互开发实践
查看>>
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>
android客户端向服务器发送请求中文乱码的问
查看>>
UOJ#220. 【NOI2016】网格 Tarjan
查看>>
Symfony翻译教程已开课
查看>>
Python模块之pickle(列表,字典等复杂数据类型与二进制文件的转化)
查看>>
通过数据库表反向生成pojo类
查看>>
css_去掉默认样式
查看>>
TensorFlow2.0矩阵与向量的加减乘
查看>>
NOIP 2010题解
查看>>
javascript中的each遍历
查看>>