首页 > 其他分享 >Android----->多线程的实现Thread、IntentService的运用

Android----->多线程的实现Thread、IntentService的运用

时间:2023-02-23 14:46:12浏览次数:31  
标签:Thread IntentService TAG Intent import android 多线程 public

 

 

 

首先建立一个Intent.xml

 

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button
        android:id="@+id/btnStartNormalService"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Start NormalService"
        />
    <Button
        android:id="@+id/btnStartIntentService"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Start IntentService"
        />
</LinearLayout>
复制代码

 

建立一个MyService.java 实现Thread多线程

复制代码
package com.szy.service;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class MyService extends Service
{
    protected static final String TAG = "IntentActivity";
    @Override
    public void onCreate()
    {
        super.onCreate();
    }

    @Override
    public void onDestroy()
    {
        super.onDestroy();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
        new MyThread().start();
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent)
    {
        return null;
    }
    
    private class MyThread extends Thread
    {

        @Override
        public void run()
        {
            try
            {
                Log.i(TAG, "MyService线程ID:"+Thread.currentThread().getId());
                Log.i(TAG, "文件下载....");
                Thread.sleep(2000);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            
        }
        
    }

}
复制代码

 

再建立一个ExampleIntentService.java的IntentService

复制代码
package com.szy.service;

import android.app.IntentService;
import android.content.Intent;
import android.util.Log;

public class ExampleIntentService extends IntentService
{
    protected static final String TAG = "IntentActivity";
    
    public ExampleIntentService()
    {
        super("ExampleIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent)
    {
        
        try
        {
            Log.i(TAG, "MyService线程ID:"+Thread.currentThread().getId());
            Log.i(TAG, "文件下载....");
            Thread.sleep(2000);
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }

    }

}
复制代码

 

最后还有建立一个IntentActivity.xml 的Activity

复制代码
package com.szy.service;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class IntentActivity extends Activity
{
    protected static final String TAG = "IntentActivity";
    
    private Button btnStartNormalService;
    private Button btnStartIntentService;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.intent);
        btnStartNormalService = (Button) findViewById(R.id.btnStartNormalService);
        btnStartIntentService = (Button) findViewById(R.id.btnStartIntentService);
        btnStartNormalService.setOnClickListener(listener);
        btnStartIntentService.setOnClickListener(listener);
    }
    
    private OnClickListener listener=new OnClickListener()
    {
        
    
        public void onClick(View v)
        {
            Intent intent;
            switch (v.getId())
            {
            case R.id.btnStartNormalService:
                intent=new Intent(IntentActivity.this, MyService.class);
                Log.i(TAG, "主线程ID:"+Thread.currentThread().getId());
                startService(intent);
                break;
            case R.id.btnStartIntentService:
                intent=new Intent(IntentActivity.this, ExampleIntentService.class);
                Log.i(TAG, "主线程ID:"+Thread.currentThread().getId());
                startService(intent);
                break;
            default:
                break;
            }
            
        }
    };
}
复制代码

 

记得修改AndroidManifest.mxl

复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.szy.service"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
        </activity>
        
        <activity android:name=".BinderActivity"
                  android:label="@string/app_name">
        </activity>
        
        <activity android:name=".IntentActivity"
                  android:label="@string/app_name">
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <service android:name=".ExampleService" />
        <service android:name=".BinderService" />
        <service android:name=".MyService"/>
        <service android:name=".ExampleIntentService"/>
    </application>
</manifest>
复制代码

标签:Thread,IntentService,TAG,Intent,import,android,多线程,public
From: https://www.cnblogs.com/kn-zheng/p/17147903.html

相关文章

  • 多线程
    一、多线程介绍1、Java中创建线程的方法3种:Thread、Runnable、Callable继承Thread类(Thread类本身就是实现Runnable接口的)实现Runnable接口实现Callable接口2、继承......
  • 【HashMap】HashMap多线程下的死循环问题及JDK8版本的修复
    背景想要记录一下关于jdk下的hashmap存在的一些问题:1、许多同学都知道JDK下的HashMap是线程不安全的,但究竟是怎样个不安全法,在多线程下会出现怎样的问题?其中原因是......
  • TFlite 多线程并行
    importnumpyasnpfrommultiprocessingimportProcess,Queuedefprocess_data(data,model_TSNet,tsnet_input,tsnet_output,queue):model=tflite_runti......
  • 多线程
    介绍获得线程号#include<pthread.h>pthread_tpthread_self(void);功能:得到线程id参数:无返回值:调用此函数的线程id创建线程#include<pthread.h>intpthrea......
  • java socket网络编程(多线程技术)
    Client.javaimportjava.io.*;importjava.net.*;importjava.util.*;publicclassClient{publicstaticvoidmain(Stringargs[]){Scannerscann......
  • 创建多线程方式3:实现Callable接口 改造下载图片案例
    packagecom.Test;importorg.apache.commons.io.FileUtils;importjava.io.File;importjava.io.IOException;importjava.net.URL;importjava.util.concurrent.*;//开......
  • Java多线程技能-方法介绍
    java多线程技能技术点:线程的启动如何使线程暂停如何使线程停止线程的优先级线程安全相关的问题方法currentThread()currentThread()方法可返回代码段正在被哪......
  • 多线程 龟兔赛跑案例
    packagecom.Java;publicclassRaceimplementsRunnable{//胜利者privatestaticStringwinner;@Overridepublicvoidrun(){for(inti=0......
  • java多线程:详解JUC
    对应狂神说JUC视频1.JUC是什么java.util下的几个包的简称涉及到多线程的开发java.util.concurrentjava.util.atomicjava.util.concurrent.locks2.线程和进程进程:多个程序......
  • Java的多线程+Socket
    客户端: packagecom.wulala;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net......