andorid 多线程handler用法

.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.hanqi.application3.UIActivity7"
    android:orientation="vertical">

    <AutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="自动完成文本编辑框"
        android:id="@+id/actv_1"
        android:completionThreshold="1"/>
    <!--completionThreshold 提示所需要的字符-->
    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sp_1">

    </Spinner>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="状态栏提示"
        android:onClick="notification_onClick"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/da2"
        android:id="@+id/iv_3"/>
</LinearLayout>

.java

package com.hanqi.application3;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.Timer;
import java.util.TimerTask;

public class UIActivity7 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ui7);

        AutoCompleteTextView actv_1 = (AutoCompleteTextView)findViewById(R.id.actv_1);
        //设置自动完成的数据源

        String[] strings = {"China","Child","Chile","Chinese","Add","All","Class","Ddp"};
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.layout_array,strings);

        actv_1.setAdapter(arrayAdapter);

        //下拉列表
        String[] strings1 = {"China","Child","Chile","Chinese","Add","All","Class","Ddp"};
        ArrayAdapter<String> arrayAdapter1 = new ArrayAdapter<String>(this,R.layout.layout_array,strings1);
        Spinner sp1= (Spinner)findViewById(R.id.sp_1);

        sp1.setAdapter(arrayAdapter1);

        sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(UIActivity7.this, "position ="+position, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

                Toast.makeText(UIActivity7.this, "什么也没选", Toast.LENGTH_SHORT).show();

            }
        });

        //handler
        final ImageView iv3 = (ImageView)findViewById(R.id.iv_3);

        final int[] iImageid = {R.drawable.da1,R.drawable.da2,R.drawable.da3,R.drawable.da4};

        //继承Handler
        final Handler handler = new Handler()
        {
            int i = 0;
            //处理消息的回调方法
            //重写
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                //判断消息的类别
                if(msg.what ==1)
                {
                    //切换图片
                    iv3.setImageResource(iImageid[i++ % iImageid.length]);
//                    i++;
//                    if(i==10)
//                    {
//                        i=0;
//                    }

                }
            }
        };
        //在新线程发送消息
        //定式循环发送
        //定时器:启动新线程,定时执行代码
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                //发送消息
                //空消息
                handler.sendEmptyMessage(1);

            }
        },1000,2000);

    }
    public void notification_onClick(View v)
    {
        //1.获取状态栏消息管理器
        NotificationManager nm  = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        //3.构建意图
        Intent intent = new Intent(this,UIActivity2.class);

        //4.获取PendingIntent
        PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);

        //2.构建消息   方法链调用
        Notification nt = new Notification.Builder(this)
                .setContentTitle("这是一个通知")
                .setContentText("这是通知内容:点击打开新的界面 ")
                .setTicker("新通知")
                .setSmallIcon(R.drawable.da1)//图片
                .setAutoCancel(true)
                .setDefaults(Notification.DEFAULT_ALL)//声音
                .setContentIntent(pendingIntent)

                .build();
        //交给管理器,发出消息
        nm.notify(0,nt);

    }
}
时间: 2024-10-27 04:46:27

andorid 多线程handler用法的相关文章

Python爬虫进阶五之多线程的用法

前言 我们之前写的爬虫都是单个线程的?这怎么够?一旦一个地方卡到不动了,那不就永远等待下去了?为此我们可以使用多线程或者多进程来处理. 首先声明一点! 多线程和多进程是不一样的!一个是 thread 库,一个是 multiprocessing 库.而多线程 thread 在 Python 里面被称作鸡肋的存在!而没错!本节介绍的是就是这个库 thread. 不建议你用这个,不过还是介绍下了,如果想看可以看看下面,不想浪费时间直接看 multiprocessing 多进程 鸡肋点 名言: "Pyt

转载:android笔记--android中的多线程--Handler, Looper, MessageQueue, Message类

什么时候使用多线程: 1. 耗时操作使用多线程, 耗时操作放在UI线程中会导致用户的操作无法得到响应. 2. 阻塞操作使用多线程, 理由同上. 3. 多核CUP的设备使用多线程, 可以有效提高CPU的利用率. 4. 并行操作使用多线程. android中的多线程模型主要涉及的类有:Looper, Handler, MessageQueue, Message等. 一:Looper类: 1 static final ThreadLocal<Looper> sThreadLocal = new Th

Android多线程——Handler (一) 实现图片下载

在UI线程中创建子线程-->在子线程中获取网络图片-->在线程中通过Message 传递二进制图片给Handler,-->Handler在handleMessage()中处理消息 package com.example.android_handler_message; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolEx

Android多线程——Handler (二)

传递消息的集中方式: 一: Message message = Message.obtain(); message.obj = data; message.what = IS_FINISHED; handle.sendMessage(message); 二: Message message = Message.obtain(handle); message.obj = data; message.sendToTarget(); 三:可以在message中传递复杂数据 Message messag

ios中的多线程的用法总结

ios中的多线程的用法总结 1.进程的基本概念 (1)每一个进程都是一个应用程序,都有独立的内存空间,一般来说一个应用程序存在一个进程,但也有多个进程的情况 (2)同一个进程的线程共享内存中的内存和资源 2.多线程的基本概念 (1)每一个程序都有一个主线程,程序启动时创建(调用main来启动). (2)多线程技术表示,一个应用程序有多个线程,使用多线程能提供CPU的利用率,防止主线程被堵塞. (3)任何有可能堵塞主线程的任务不要在主线程执行(如:访问网络). (4)主线程的生命周期和应用程序绑定

android学习之路 Handler用法

Android之Handler用法总结 方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型) 刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread( new Runnable() { public void run() { myView.invalidate(); } }).start(); 可以实现功能,刷新UI界面.但是这样是不行的,因为它违背了单线程模型:Android UI操作并不是线程安全的并

php异步多线程swoole用法实例

摘要:本文实例讲述了php异步多线程swoole用法.分享给大家供大家参考.具体分析如下:swoole重新定义PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务,下面的实例就可以证实这一功能.一般来说,Swoole提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询.swoole 本文实例讲述了php异步多线程swoole用法.分享给大家供大家参考.具体分析如下: sw

android中handler用法总结

    一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中来接收.处理该消息,以避免直接在UI主线程中处理事务导致影响UI主线程的其他处理工作,Android提供了Handler作为主线程和子线程的纽带:也可以将handler对象传给其他进程,以便在其他进程中通过handler给你发送事件:还可以通过handler的延时发送message,可以延时

Android学习笔记--Handler用法总结

转自:一叶知秋的博客 http://blog.sina.com.cn/s/blog_77c6324101016jp8.html 一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如 (1) 可以用handler发送一个message,然后在handler的线程中来接收.处理该消息,以避免直接在UI主线程中处理事务导致影响UI主线程的其他处理工作,Android提供了Handler作为主线程和子线程的纽带: (2) 也可以