Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- safeFlag = false;
- if(onProcessFlag){
- synchronized (handler){
- handler.sendEmptyMessage(0);
- }
- }
- }
- @Override
- protected void onDestroy() {
- safeFlag = true;
- super.onDestroy();
- }
- static private final RingList<Runnable> runtimeProcess = new RingList<>(); //Source code: https://pastebin.com/Ci1rxFDr
- static private final TreeMap<Integer, Runnable> delayProcess = new TreeMap<>();
- static private int delayProcessCount = 1;
- static private boolean onProcessFlag = false;
- static private boolean safeFlag = false;
- static private Handler handler = new Handler(){
- @Override
- public void handleMessage(Message msg) {
- Runnable $;
- if(msg.what==0){
- if(safeFlag) return;
- onProcessFlag = false;
- do {
- if(($=runtimeProcess.shift())!=null)
- $.run();
- } while (runtimeProcess.size()!=0);
- } else {
- synchronized (delayProcess){
- $=delayProcess.remove(msg.what);
- }
- if($!=null){
- if(safeFlag){
- MainActivity.post($);
- } else {
- $.run();
- }
- }
- }
- }
- };
- static synchronized private void post(Runnable runnable){
- runtimeProcess.push(runnable);
- if(onProcessFlag) return;
- onProcessFlag = true;
- synchronized (handler){
- handler.sendEmptyMessage(0);
- }
- }
- static synchronized private void postDelay(Runnable runnable, long delay){
- int pc = delayProcessCount++;
- synchronized (delayProcess){
- delayProcess.put(pc, runnable);
- }
- synchronized (handler){
- handler.sendEmptyMessageDelayed(pc, delay);
- }
- }
- static private MainActivity self; {self = this;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement