android編程之多線程編程實例分析
本文實例講述了android編程之多線程編程實現(xiàn)方法。分享給大家供大家參考。具體分析如下:
該功能與前面《android開發(fā)socket編程之udp發(fā)送實例分析》中一樣,當按下鍵后,發(fā)送文本框中數(shù)據(jù)給PC。不同的是把發(fā)送數(shù)據(jù)的功能放在一個線程socket_send中。
一、環(huán)境:
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"; //這是要傳輸?shù)臄?shù)據(jù)
byte out [] = str.getBytes(); //把傳輸內(nèi)容分解成字節(jié)
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;
}
}
}
}
注意:程序中采用的線程間通信的方法是把需要共享的變量設(shè)置成public屬性
希望本文所述對大家的Android程序設(shè)計有所幫助。
- Android 中 EventBus 的使用之多線程事件處理
- Android中的Handler與多線程應(yīng)用實例
- Android SQLite3多線程操作問題研究總結(jié)
- Android中創(chuàng)建多線程管理器實例
- android 多線程技術(shù)應(yīng)用
- Android編程之canvas繪制各種圖形(點,直線,弧,圓,橢圓,文字,矩形,多邊形,曲線,圓角矩形)
- Android編程根據(jù)系列圖片繪制動畫實例總結(jié)
- 使用Android自定義控件實現(xiàn)滑動解鎖九宮格
- android 自定義控件 自定義屬性詳細介紹
- Android開發(fā)之多線程中實現(xiàn)利用自定義控件繪制小球并完成小球自動下落功能實例
相關(guān)文章
Android Flutter利用CustomPaint繪制基本圖形詳解
CustomPaint其實和前端的Canvas基本上是一樣的,前端Canvas支持的繪制方法CustomPaint都支持,畢竟CustomPaint其實也是基于Canvas實現(xiàn)的。本篇我們來介紹 CustomPaint 基本圖形的繪制,感興趣的可以了解一下2022-07-07
Android 開發(fā)之BottomBar+ViewPager+Fragment實現(xiàn)炫酷的底部導航效果
BottomBar是Github上的一個開源框架,本文給大家介紹Android 開發(fā)之BottomBar+ViewPager+Fragment實現(xiàn)炫酷的底部導航效果,非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧2016-05-05
Android PopWindow 設(shè)置背景亮度的實例
這篇文章主要介紹了Android PopWindow 設(shè)置背景亮度的實例的相關(guān)資料,這里提供實現(xiàn)方法,希望能幫助有所需要的朋友,需要的朋友可以參考下2017-08-08
Android實現(xiàn)系統(tǒng)狀態(tài)欄的隱藏和顯示功能
這篇文章主要介紹了Android實現(xiàn)系統(tǒng)狀態(tài)欄的隱藏和顯示功能,文中還給大家?guī)硭姆N方法,大家可以根據(jù)自己需要參考下2018-07-07
Android使用元數(shù)據(jù)實現(xiàn)配置信息的傳遞方法詳細介紹
這篇文章主要介紹了Android使用元數(shù)據(jù)實現(xiàn)配置信息的傳遞方法,也就是實現(xiàn)配置快捷菜單功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-09-09

