Android笔记小记(2)

一键关闭所有acitivity

继承一个基类,然后 把所有acitivity加入到list集合中。 定义一个方法,遍历关闭list集合所有有的元素 finish();

public static ArrayList list=new ArrayList();

    public static void closeALL(){  

        for (int i = 0; i < list.size(); i++) {
            list.get(i).finish();
        }

    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i("oracle", getClass().getSimpleName()+"----onCreate");
   list.add(this);
}
         @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("oracle", getClass().getSimpleName()+"----onDestroy");
   list.remove(this);
    }
广播

1.系统广播 //飞行模式属于系统广播
2.用户广播 //用户自定义

注册方式有两种

  • 1.动态注册(activity)
    写一个广播类 继承BroadCastReceiver 重新OnReceive 方法 在里面做什么 声明周期只有11秒

//Oncreate方法中绑定
broadcastReceiver=new myBroadcastReceiver();
IntentFilter filter=new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
registerReceiver(broadcastReceiver, filter);


//OnDestory时记得解绑
unregisterReceiver()
  • 2.静态注册(清单文件) 在AndroidMainFest文件注册

< receiver   name=”类的名字”>
< action  name=”绑定广播的名字”>
< receiver>
发送广播

所有发送广播不需要注册 但是需要写传的action

  • 1.普通广播

    sendBroadcast(intent)发送广播

    接收广播需要注册

  • 2.有序广播

    sendOrderedBroadcast(intent, null); 发送广播

    用setResult函数来讲结果传给下一个接收广播

    getResult(true)取得上一个广播的值

    abortBroadcast(); 用来丢弃广播

    优先级高的接收广播可以追加优先级低的接收广播 但不能修改以前的值

  • 3.粘性广播 sendStickyBroadcast(intent); 发送广播 可以先运行广播发送器,接收器可以后运行 广播发送需设置权限

    < uses-permission android:name="android.permission.BROADCAST_STICKY"/>

服务

负责在后台运行,不与用户进行交互,为应用程序提供数据和运算 alt

  • 一、启动服务:

    生命周期:oncreate()—> onStartCommand()—>OnDestory() 通过startService服务后启动服务

    Intent intent=new intent(this,myService.class); StartService(intent);

    启动服务传递数据,一定要用动态注册广播接收器,通过广播发送数据 广播构造一个接口内定义一个方法,用来获取数据。 再通过构造函数传递接口用来传递数据

  • 二、绑定服务:

    生命周期:oncreate()—>onBind()—> onUnbind()—> OnDestroy()

    通过调用bindService服务后启动服务


//MainActivity  测试传值
public class MainActivity extends Activity {
ServiceConnection conn=new ServiceConnection() {
    //断开连接时做什么
    @Override
    public void onServiceDisconnected(ComponentName name) {
        // TODO Auto-generated method stub

    }

    //绑定服务建立连接时
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
            MyBind my=(MyBind)service;
            Log.i("oracle",my.age+"");

    }
};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       Intent intent=new Intent(this,MyService.class);
        bindService(intent, conn, Context.BIND_AUTO_CREATE);
    }

绑定服务传递数据不需要用广播 用连接传递 Destory()方法中解绑


//Service类  测试传值
class MyBind extends Binder{
     public int age=10;
}    



    @Override
    public IBinder onBind(Intent intent) {
    Log.i("oracle", "OnBind");
        return new MyBind();
    }

kxind

性别:男. 敢于尝试 爱折腾的死宅程序猿. https://github.com/kxinds