android编程之多线程编程实例分析

 更新时间:2015年04月21日 10:46:45   作者:jdh99  
这篇文章主要介绍了android编程之多线程编程,实例分析了Android多线程程序设计的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了android编程之多线程编程实现方法。分享给大家供大家参考。具体分析如下:

该功能与前面《android开发socket编程之udp发送实例分析》中一样,当按下键后,发送文本框中数据给PC。不同的是把发送数据的功能放在一个线程socket_send中。

一、环境:

win7 + eclipse + ndk

二、代码:

主类test_socket.java

package test.soket; 
//import com.test_button.R; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 
import java.net.Socket; 
import java.net.SocketException; 
import java.net.UnknownHostException; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
public class test_socket extends Activity { 
 public static TextView show; 
 public static Button press; 
 public static boolean flag; 
 /** Called when the activity is first created. */ 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.main); 
  //开辟控件空间 
  show = (TextView)findViewById(R.id.editText1); 
  press = (Button)findViewById(R.id.button1); 
  flag = false; 
  soket_send thread = new soket_send(); 
  thread.init(); 
  thread.start(); 
  press.setOnClickListener(new Button.OnClickListener() 
  { 
   @Override 
   public void onClick(View v) 
   { 
    flag = true; 
   } 
  }); 
 } 
}

线程类socke_sendt.java:

package test.soket; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 
import java.net.Socket; 
import java.net.SocketException; 
import java.net.UnknownHostException; 
import java.util.LinkedList; 
import android.media.AudioFormat; 
import android.media.AudioRecord; 
import android.media.MediaRecorder; 
import android.util.Log;  
public class soket_send extends Thread 
{ 
 private static final int MAX_DATA_PACKET_LENGTH = 40; 
 private byte[] buffer = new byte[MAX_DATA_PACKET_LENGTH]; 
 private DatagramPacket dataPacket; 
 private DatagramSocket udpSocket; 
 public void init() 
 { 
  try 
  { 
   udpSocket = new DatagramSocket(5554); 
  } 
  catch (SocketException e) 
  { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } 
  dataPacket = new DatagramPacket(buffer, MAX_DATA_PACKET_LENGTH); 
  String str = "hello,jdh"; //这是要传输的数据 
  byte out [] = str.getBytes(); //把传输内容分解成字节 
  dataPacket.setData(out); 
  dataPacket.setLength(out.length); 
  dataPacket.setPort(5554); 
  try 
  { 
   InetAddress broadcastAddr = InetAddress.getByName("192.168.0.248"); 
   dataPacket.setAddress(broadcastAddr); 
   udpSocket.send(dataPacket); 
  } 
  catch (IOException e) 
  { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  }  
 } 
 public void run() 
 { 
  while (true) 
  { 
   if (test_socket.flag) 
   { 
    //获得输入框文本 
    CharSequence str =test_socket.show.getText(); 
    byte out[] = str.toString().getBytes(); 
    dataPacket.setData(out); 
    dataPacket.setLength(out.length); 
    try 
    { 
       
     InetAddress broadcastAddr = InetAddress.getByName("192.168.0.248"); 
     dataPacket.setAddress(broadcastAddr); 
     udpSocket.send(dataPacket); 
    } 
    catch (IOException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    test_socket.flag = false; 
   } 
  } 
 } 
}

注意:程序中采用的线程间通信的方法是把需要共享的变量设置成public属性

希望本文所述对大家的Android程序设计有所帮助。

相关文章

  • Android中Canvas的常用方法总结

    Android中Canvas的常用方法总结

    在Android自定义View的时候,我们经常需要绘制一些自己想要的效果。这里就需要使用Canvas对象。下面这篇文章将Canvas对象常用方法做个笔记,方便自己和大家以后使用的时候查阅,下面来一起看看吧。
    2016-09-09
  • Android Flutter利用CustomPaint绘制基本图形详解

    Android Flutter利用CustomPaint绘制基本图形详解

    CustomPaint其实和前端的Canvas基本上是一样的,前端Canvas支持的绘制方法CustomPaint都支持,毕竟CustomPaint其实也是基于Canvas实现的。本篇我们来介绍 CustomPaint 基本图形的绘制,感兴趣的可以了解一下
    2022-07-07
  • Android获取手机通话记录的方法

    Android获取手机通话记录的方法

    这篇文章主要为大家详细介绍了Android获取手机通话记录的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果

    Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果

    BottomBar是Github上的一个开源框架,本文给大家介绍Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-05-05
  • Android PopWindow 设置背景亮度的实例

    Android PopWindow 设置背景亮度的实例

    这篇文章主要介绍了Android PopWindow 设置背景亮度的实例的相关资料,这里提供实现方法,希望能帮助有所需要的朋友,需要的朋友可以参考下
    2017-08-08
  • Android实现系统状态栏的隐藏和显示功能

    Android实现系统状态栏的隐藏和显示功能

    这篇文章主要介绍了Android实现系统状态栏的隐藏和显示功能,文中还给大家带来四种方法,大家可以根据自己需要参考下
    2018-07-07
  • Android仿淘宝商品详情页效果

    Android仿淘宝商品详情页效果

    这篇文章主要为大家详细介绍了Android仿淘宝商品详情页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android实现从相册选择照片功能

    Android实现从相册选择照片功能

    这篇文章主要为大家详细介绍了Android实现从相册选择照片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Android使用元数据实现配置信息的传递方法详细介绍

    Android使用元数据实现配置信息的传递方法详细介绍

    这篇文章主要介绍了Android使用元数据实现配置信息的传递方法,也就是实现配置快捷菜单功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • Android AMS启动App进程原理分析

    Android AMS启动App进程原理分析

    这篇文章主要介绍了Android AMS启动App进程原理,系统fork函数是如何创建进程,文中有详细的代码示例,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-05-05

最新评论