适用情况:账号或者密码失效,需要重新登录。采用发送广播的方式提醒用户,并跳转到登录界面。
发送广播:
Intent intent=new Intent("OffLine");
sendBroadcast(intent);
方式一:
1.创建activity基类BaseActivity,在onResume()的方法中,添加广播的过滤器。
IntentFilter fliter=new IntentFilter();
fliter.addAction("OffLine");
receiver=new MyReceiver();
registerReceiver(receiver, fliter);
在onPause()的方法中,注销广播接收器
unregisterReceiver(receiver);
2.广播的接收器定义
private class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {
AlertDialog.Builder builer=new AlertDialog.Builder(context);
builer.setTitle("强制下线广播")
.setMessage("你已被强制下线,请重新登陆。")
.setCancelable(true)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCollector.finishAll() Intent in=new Intent(context ,LoginActivity.class);
startActivity(in);
}
}).show();
}
}
方式二:
1.在AndroidManifest.xml文件中
<receiver android:name=".ForceOfflineBroadCastReceiver" android:exported="false">
<intent-filter>
<action android:name="com.example.broadcastpractice.FORCE_OFFLINE"/>
</intent-filter>
</receiver>
2.广播的接收器定义
public class ForceOfflineBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("强制下线广播");
builder.setMessage("你已被强制下线,请重新登陆。");
builder.setCancelable(false);
builder.setPositiveButton("确定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ActivityCollector.finishAll();
Intent intent = new Intent(context,LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
AlertDialog alterDialog = builder.create();
alterDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alterDialog.show();
}
}
文章来源:http://blog.csdn.net/xiaoqun999/article/details/50735520
http://blog.csdn.net/sdddlll/article/details/54142703