• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

App Thread Crash

Paul Jose

Lurker
I am trying to create a thread in an android application to keep checking my firebase database to check if an otp value has been put in the child value of a node. But it keeps crashing as soon as I start the application. This is my code so far.

//Thread check otp
Thread t = new Thread() {
@override
public void run() {
while(!isInterrupted()) {
try {
Thread.sleep(5000);
runOnUiThread(new Runnable() {
@override
public void run() {
//check OTP if present on database
FirebaseDatabase.getInstance().getReference().child("Keys")
.addListenerForSingleValueEvent(new ValueEventListener() {
@override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Subjects keys = snapshot.getValue(Subjects.class);
//System.out.println(user.email);
Intent i = new Intent(getApplicationContext(), markAttendance.class);
i.putExtra("otp",keys.otpcode);
i.putExtra("subid", keys.subjectId);
finish();
startActivity(i);

}
}
@override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};

t.start();
 
Please provide error log and may be more code about calling activity.
I tested your code without access to Firebase, it works fine.
 
Last edited:
05-08 04:50:53.613 28585-28585/com.example.vdntd.attendancemanager E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.vdntd.attendancemanager, PID: 28585
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vdntd.attendancemanager/com.example.vdntd.attendancemanager.markAttendance}: java.lang.NullPointerException: toCopy == null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2924)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by: java.lang.NullPointerException: toCopy == null
at java.lang.StringFactory.newStringFromString(Native Method)
at com.example.vdntd.attendancemanager.markAttendance.onCreate(markAttendance.java:18)
at android.app.Activity.performCreate(Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
 
class otpThread extends Thread {
@override
public void run() {

boolean running = true;
while(running==true) {

//final DatabaseReference databaseSubjects;
final FirebaseUser user = firebaseAuth.getCurrentUser();

//check OTP if present on database
FirebaseDatabase.getInstance().getReference().child("Keys")
.addListenerForSingleValueEvent(new ValueEventListener() {
@override
public void onDataChange(DataSnapshot dataSnapshot) {
for (final DataSnapshot snapshot : dataSnapshot.getChildren()) {
final Subjects keys = snapshot.getValue(Subjects.class);
//System.out.println(user.email);

FirebaseDatabase.getInstance().getReference("Users").child(user.getUid()).child("Subjects").addListenerForSingleValueEvent(new ValueEventListener() {
@override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for(DataSnapshot snapshot1 : dataSnapshot.getChildren()){
Subjects studentside = snapshot1.getValue(Subjects.class);

if((studentside.getSubjectId() == keys.subjectId) && (keys.otpcode != "0")) {
Intent i = new Intent(getApplicationContext(), markAttendance.class);
i.putExtra("otp",keys.otpcode);
i.putExtra("subid", keys.subjectId);
finish();
startActivity(i);
}
}
}

}

@override
public void onCancelled(DatabaseError databaseError) {

}
});


}
}
@override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
}

otpThread thread = new otpThread();
thread.start();


new code but it keeps hanging
 
It says that problem is with MarkAttendance.class
Please provide code of classes Subjects,class, MarkAttendance.class and JSON file of couple of records of your FirebaseDatabase.
 
Back
Top Bottom