解决android退出整个应用方法
来源:互联网 发布:网络技术支持与维护 编辑:程序博客网 时间:2024/04/30 10:52
不解释了,直接说下测试的例子
例子:三个Activity之间任意切换,然后在任意一个界面按下模拟器上的返回键,观察是否退出应用;
先创建一个广播接收器:
package com.study.test;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyBroadCast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub//Activity被销毁时如果没有解除注册,系统会报异常((Activity)context).unregisterReceiver(this);((Activity)context).finish();}}
工具类:
package com.study.test;import android.app.Activity;import android.content.Intent;import android.content.IntentFilter;public class Util { Activity activity; public Util(Activity activity){ this.activity = activity; } /** * 注册广播 */public void registerBroadcastReceiver() {IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("CLOSE");activity.registerReceiver(new MyBroadCast(), intentFilter);}/** * 关闭Activity */public void exitApp(){Intent intent =new Intent();intent.setAction("CLOSE");activity.sendBroadcast(intent);activity.finish();}}
MainActivity
package com.study.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {Button btn1;Button btn2;TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) findViewById(R.id.tv); tv.setText("===========MainActivity==========="); btn1 = (Button) findViewById(R.id.btn1); btn1.setText("to AActivity"); btn1.setOnClickListener(new ButtonClickListener()); btn2 = (Button) findViewById(R.id.btn2); btn2.setText("to BActivity"); btn2.setOnClickListener(new ButtonClickListener()); } public class ButtonClickListener implements View.OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btn1:startActivity(new Intent(MainActivity.this, AActivity.class));break;case R.id.btn2 :startActivity(new Intent(MainActivity.this, BActivity.class));break;}} } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //注册广播 new Util(this).registerBroadcastReceiver(); } @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode == KeyEvent.KEYCODE_BACK) {System.out.println("---------------->main"); new Util(this).exitApp();}return super.onKeyDown(keyCode, event);}}
AActivity
package com.study.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.Button;import android.widget.TextView;public class AActivity extends Activity {Button btn1;Button btn2;TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) findViewById(R.id.tv); tv.setText("AActivity------------->"); btn1 = (Button) findViewById(R.id.btn1); btn1.setText("to MainActivity"); btn1.setOnClickListener(new ButtonClickListener()); btn2 = (Button) findViewById(R.id.btn2); btn2.setText("to BActivity"); btn2.setOnClickListener(new ButtonClickListener()); } public class ButtonClickListener implements View.OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btn1:startActivity(new Intent(AActivity.this, MainActivity.class));break;case R.id.btn2 :startActivity(new Intent(AActivity.this, BActivity.class));break;}} } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); new Util(this).registerBroadcastReceiver(); }@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode == KeyEvent.KEYCODE_BACK) {System.out.println("---------------->a");new Util(this).exitApp();}return super.onKeyDown(keyCode, event);} }
BActivity
package com.study.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.Button;import android.widget.TextView;public class BActivity extends Activity {Button btn1;Button btn2;TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) findViewById(R.id.tv); tv.setText("BActivity------------->"); btn1 = (Button) findViewById(R.id.btn1); btn1.setText("to MainActivity"); btn1.setOnClickListener(new ButtonClickListener()); btn2 = (Button) findViewById(R.id.btn2); btn2.setText("to AActivity"); btn2.setOnClickListener(new ButtonClickListener()); } public class ButtonClickListener implements View.OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btn1:startActivity(new Intent(BActivity.this, MainActivity.class));break;case R.id.btn2 :startActivity(new Intent(BActivity.this, AActivity.class));break;}} } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //注册广播 new Util(this).registerBroadcastReceiver(); } @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode == KeyEvent.KEYCODE_BACK) {System.out.println("---------------->BActivity界面"); new Util(this).exitApp();}return super.onKeyDown(keyCode, event);}}
布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tv" android:textSize="20dp" android:textColor="@android:color/white" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/btn1" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/btn2" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dp" android:text="测试开始,三个Activity之间任意切换,然后在任何界面按下返回键都会安全的关闭整个应用" /></LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.study.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <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> <activity android:name=".AActivity"/> <activity android:name=".BActivity"/> </application></manifest>
测试界面:
源码下载链接:
http://download.csdn.net/detail/sdefzhpk/4329553
- 解决android退出整个应用方法
- Android之退出整个应用方法之一
- Android学习 - 退出整个应用方法
- Android之退出整个应用方法之一
- 退出整个Android 应用的方法
- Android之退出整个应用方法之一
- Android退出整个应用的方法
- android退出整个应用
- android 退出整个应用
- Android退出整个应用
- Android App 退出整个应用
- Android之退出整个应用方法之二
- Android之退出整个应用方法之二
- Android之退出整个应用的一种方法
- android中直接退出整个应用的方法
- Android之退出整个应用的一种方法
- Android之退出整个应用的一种方法(二)
- Android之退出整个应用方法之二
- 通过PHP pcntl函数实现多线程功能
- Eclipse项目发布内存溢出问题解决
- 架构师需要具备哪些素质
- CFileException文件的异常处理
- nginx thin 部署rails3程序
- 解决android退出整个应用方法
- wpf+.net 4.5 surface2.0 = 异步多点触控 时间轴 part7
- mini2440网卡驱动DM9000之dm9000_start_xmit
- 获得应用程序路径
- InkCanvas 保存图片
- 【Tiny6410 And Linux】—(5.2)—RamDisk 驱动实现(自己绑定 make_request_fn() )——代码
- ajax以form表单来提交
- 一致性HASH算法的JAVA实现
- Linux 查看系统信息命令