Код здесь будет делать обновление textview и listview с использованием фоновой службы.Трансляция Intent получает нулевое значение
класс Broadcastservice Деталь
public class BroadcastService extends Service {
private static final String TAG = "BroadcastService";
public static final String BROADCAST_ACTION = "com.example.activity.displayevent";
private final Handler handler = new Handler();
Intent intentBS;
int counter = 0;
@Override
public void onCreate() {
super.onCreate();
intentBS = new Intent(BROADCAST_ACTION);
}
@Override
public void onStart(Intent intentBS, int startId) {
handler.removeCallbacks(sendUpdatesToUI);
handler.postDelayed(sendUpdatesToUI, 1000); // 1 second
}
private Runnable sendUpdatesToUI = new Runnable() {
public void run() {
getShiftCode();
handler.postDelayed(this, 10000); // 10 seconds
}
};
private void getShiftCode() {
List<Header> headers = new ArrayList<Header>();
headers.add(new BasicHeader("Accept", "application/json"));
EmployeeRestClient.get(BroadcastService.this, "RestExample/shiftcode",
headers.toArray(new Header[headers.size()]),null,
new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
ArrayList<String> scArray = new ArrayList<String>();
for (int i = 0; i < response.length(); i++) {
try {
String Sc_array = c.getString("shift_Code");
scArray.add(Sc_array);
} catch (JSONException e) {
e.printStackTrace();
}
}
shift_Code1= scArray.get(0);
intentBS.putExtra("shift_Code1", shift_Code1);
getEmployees();
sendBroadcast(intentBS);
}
});
}
private void getEmployees() {
List<Header> headers = new ArrayList<Header>();
headers.add(new BasicHeader("Accept", "application/json"));
EmployeeRestClient.get(BroadcastService.this, "RestExample/employee",
headers.toArray(new Header[headers.size()]),null,
new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
ArrayList<String> employeeArray1 = new ArrayList<String>();
ArrayList<String> employeeArray2 = new ArrayList<String>();
for (int i = 0; i < response.length(); i++) {
try {
String First_NameArray = c.getString("first_Name");
String Second_NameArray = c.getString("second_name");
employeeArray1.add(First_NameArray);
employeeArray2.add(Second_NameArray);
} catch (JSONException e) {
e.printStackTrace();
}
}
intentBS.putExtra("employee_Array1", employeeArray1);
intentBS.putExtra("employee_Array2", employeeArray2);
}
});
}
Ошибка:
java.lang.RuntimeException: Error receiving broadcast Intent { act=com.example.activity.displayevent flg=0x10 (has extras) } and
Вызванный: java.lang.NullPointerException
The NullPointerException указывает на мой first_Name.getCount()
метод в моем adapterclass и эти направления моей деятельности
updateUI(intentBS);
private void updateUI(Intent intentBS) {
final MyListAdapter myListAdapter = new MyListAdapter (SecondActivity.this,nameArray1,nameArray2);
Но передаваемая трансляция не может быть получена в классе активности.
я некоторые, что понял, о чем вы говорите. На самом деле, я получаю значение shiftcode, если отключить метод getemployees(). Что мне теперь нужно делать, чтобы получить значения arraylist. – user3785322
@ user3785322 В вашем случае как быстрое решение вы можете легко перемещать 'sendBroadcast (intentBS),' to' getEmployees' и помещать его после 'intentBS.putExtra (" employee_Array2 ", employeeArray2);' –
Отлично. Это сработало. Я пробовал все остальное, кроме этого. Кстати, это правильный способ сделать это. – user3785322