您的位置:首页 > 其它

andriod之BroadcastReciever--广播接受者,启动acitivity,和service,以及停止service

2014-12-21 15:35 399 查看
主显示布局以及代码:

(总结:菜单列表中的receiver中的action是属于标识作用,可以随便填,后面会根据这个来判断处理哪个业务)

activity_main.xml:

<RelativeLayout 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.example.day0707.MainActivity" >

<Button

android:id="@+id/startActivity"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="启动新的activity"

/>

<Button

android:id="@+id/startService"

android:layout_below="@id/startActivity"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="启动Service"

/>

<Button

android:id="@+id/stopService"

android:layout_below="@id/startService"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="停止Service"

/>

</RelativeLayout>

主Activity的java代码:

package com.example.day0707;

import android.support.v7.app.ActionBarActivity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

public class MainActivity extends ActionBarActivity implements OnClickListener{

private BroadcastReceiver mReceiver2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

setlistener();

}

private void setlistener() {

// TODO Auto-generated method stub

findViewById(R.id.startActivity).setOnClickListener(this);

findViewById(R.id.startService).setOnClickListener(this);

findViewById(R.id.stopService).setOnClickListener(this);

}

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent = new Intent();

switch(view.getId()){

case R.id.startActivity:

intent.setAction("com.lisoft.day0707.Start_Activity");

break;

case R.id.startService:

intent.setAction("com.lisoft.day0707.start_Service");

break;

case R.id.stopService:

intent.setAction("com.lisoft.day0707.stop_Service");

break;

default :

break;

}

sendBroadcast(intent);

}

}

接受广播者java类:

package com.example.day0707;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class MyReceiver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

String actionName = intent.getAction();

if("com.lisoft.day0707.Start_Activity".equals(actionName)){

Intent second = new Intent(context,SecondActivity.class);

second.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(second);

}else if("com.lisoft.day0707.start_Service".equals(actionName)){

Intent service = new Intent("com.litsoft.day0707.MyService");

context.startService(service);

}else if("com.lisoft.day0707.stop_Service".equals(actionName)){

Intent service = new Intent("com.litsoft.day0707.MyService");

context.stopService(service);

}

}

}

Service类:

package com.example.day0707;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.os.SystemClock;

import android.util.Log;

public class MyService extends Service{

private boolean isLive = true;//是否存活

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

// TODO Auto-generated method stub

new Thread(){

@Override

public void run() {

// TODO Auto-generated method stub

while(isLive){

SystemClock.sleep(2000);

Log.i("main", "this Service is still live");

}

}

}.start();

return super.onStartCommand(intent, flags, startId);

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

isLive = false;

Log.i("main", "this Service is dead");

super.onDestroy();

}

}

第二个acitivity:布局:

<RelativeLayout 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.example.day0707.SecondActivity" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

</RelativeLayout>

java类:

package com.example.day0707;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

public class SecondActivity extends ActionBarActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_send_cond);

}

}

列表清单:AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.day0707"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="21" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name=".MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<receiver android:name=".MyReceiver" >

<intent-filter>

<action android:name="com.lisoft.day0707.Start_Activity" />

<action android:name="com.lisoft.day0707.start_Service" />

<action android:name="com.lisoft.day0707.stop_Service" />

</intent-filter>

</receiver>

<activity

android:name=".SecondActivity"

android:label="@string/title_activity_send_cond" >

</activity>

<service android:name="com.example.day0707.MyService">

<intent-filter>

<action android:name="com.litsoft.day0707.MyService" />

</intent-filter>

</service>

</application>

</manifest>

效果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐