完成服务活动

时间:2014-04-23 22:27:57

标签: android android-service android-broadcast mqtt

我正在构建一个需要连接到MQTT服务器的应用程序。一切正常,但我想让它失败证明。更具体地说,我需要在服务无法连接到MQTT服务器时,应用程序关闭,因为它无法执行任何操作。我试图向活动广播一个意图,但广播在捕获异常后没有达到它。 (为了便于理解,我省略了一些代码)

服务的onHandleIntent()

try{
    mqttClient.connect();
} catch (MqttException e) {
    Intent msgint = new Intent();
    msgint.setAction(constantStrings.SH_CONN_ERROR);
    sendBroadcast(msgint);
    Log.d("MqttLog","ERROR-MqttException " + e.getMessage());
}

我需要完成的活动(SelectionGrid.class)

@Override
protected void onCreate(Bundle savedInstanceState) {
    [...]
    IntentFilter filter = new IntentFilter();
    filter.addAction(constantStrings.SH_CONNERROR);
    registerReceiver(SH_Communication, filter);
}

BroadcastReceiver SH_Communication = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if(action.equals(constantStrings.SH_CONN_ERROR)){
            new AlertDialog.Builder(getApplicationContext())
            .setTitle("Error")
            .setMessage("No conection")
            .setCancelable(false)
            .setPositiveButton("Close app", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) { 
                    SelectionGrid.this.finish();
                }
             })
            .setIcon(android.R.drawable.ic_dialog_alert)
            .show();
        }
    }
};

我在捕获异常时获得了Log条目,但广播从未进入活动。 有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

我能够解决它。原来我说的是错误的活动,看起来很像我真正需要的活动。我在问题中展示的代码是正确的。