zoukankan      html  css  js  c++  java
  • android service

    引用:http://blog.sina.com.cn/s/blog_5e32cc130100gvc7.html

    Android Service示例

     (2010-01-29 16:09:19)
    标签: 

    adroid

     

    service

     

    demo

     

    activity

     

    it

    分类: Android
           Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service。Service 可以分为有无限生命和有限生命两种。特别需要注意的是Service跟Activities是不同的(简单来说可以理解为后台与前台的区别),例如,如果需要使用Service的话,需要调用startService(),从而利用startService()去调用Service中的OnCreate()和onStart()方法来启动一个后台的Service。
          启动一个Service的过程如下:context.startService()  ->onCreate()- >onStart()->Service running其中onCreate()可以进行一些服务的初始化工作,onStart()则启动服务。
          停止一个Service的过程如下:context.stopService() | ->onDestroy() ->Service stop
          接下来的实例是一个利用后台服务播放音乐的小例子,点击start运行服务,点击stop停止服务。
    ServicesDemo.java(是一个Activity)

    package com.android.myservice;

    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 ServiceDemo extends Activity implements OnClickListener {
        private static final String TAG = "ServiceDemo";
        Button buttonStart, buttonStop;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            buttonStart = (Button) findViewById(R.id.buttonStart);
            buttonStop = (Button) findViewById(R.id.buttonStop);

            buttonStart.setOnClickListener(this);
            buttonStop.setOnClickListener(this);
        }

        public void onClick(View src) {
            switch (src.getId()) {
                case R.id.buttonStart:
                    Log.i(TAG, "onClick: starting service");
                    startService(new Intent(this, MyService.class));
                    break;
                case R.id.buttonStop:
                    Log.i(TAG, "onClick: stopping service");
                    stopService(new Intent(this, MyService.class));
                    break;
            }
        }
    }
    除此之外还要在Manifest里面声明服务:(AndroidManifest.xml)
    <?xml version="1.0" encoding="utf-8"?>

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.myservice">
        <application android:label="@string/app_name">
            <activity android:name=".ServiceDemo" 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:enabled="true" android:name=".MyService"/>
        </application>
    </manifest>

    定义Service(MyService.java)
    package com.android.myservice;

    import android.app.Service;
    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.os.IBinder;
    import android.util.Log;
    import android.widget.Toast;

    public class MyService extends Service {
        private static final String TAG = "MyService";
        MediaPlayer player;

        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }

        @Override
        public void onCreate() {
            Toast.makeText(this, "My Service created", Toast.LENGTH_LONG).show();
            Log.i(TAG, "onCreate");

            player = MediaPlayer.create(this, R.raw.braincandy);
            player.setLooping(false);
        }

        @Override
        public void onDestroy() {
            Toast.makeText(this, "My Service Stoped", Toast.LENGTH_LONG).show();
            Log.i(TAG, "onDestroy");
            player.stop();
        }

        @Override
        public void onStart(Intent intent, int startid) {
            Toast.makeText(this, "My Service Start", Toast.LENGTH_LONG).show();
            Log.i(TAG, "onStart");
            player.start();
        }
    }
    layout文件夹中是main.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"
        android:gravity="center">
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/services_demo" android:gravity="center" android:textSize="20sp" android:padding="20dp"/>
    <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonStart" android:text="@string/start"></Button>
    <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/stop" android:id="@+id/buttonStop"></Button>
    </LinearLayout>

    values 文件夹中是strings.xml
    <?xml version="1.0" encoding="utf-8"?>

    <resources>
        <string name="start">Start</string>
        <string name="stop">Stop</string>
        <string name="services_demo">Service Demo</string>
    </resources>
  • 相关阅读:
    element ui 表单清空
    element ui 覆盖样式 方法
    element ui 修改表单值 提交无效
    element ui 抽屉里的表单输入框无法修改值
    element ui 抽屉首次显示 闪烁
    css 左侧高度 跟随右侧内容高度 自适应
    PICNUF框架
    elementui 抽屉组件标题 出现黑色边框
    vue 子组件跨多层调用父组件中方法
    vue 编辑table 数据 未点击提交,table里的数据就发生了改变(深拷贝处理)
  • 原文地址:https://www.cnblogs.com/sode/p/2103682.html
Copyright © 2011-2022 走看看