마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서비스에서 UI를 그리는 작업이 되지 않습니다.

0 추천

특정 어플이 실행된 상태가 아니면 윈도우매니저를 이용해 특정 뷰로 화면을 가리려고 합니다.

어플이 실행되는 순간 발생되는 브로드캐스트가 없어서 백그라운드에서 스레드로 현재 실행되고 있는 앱이 어떤 것인지 계속해서 무한 검사하는 작업을 하려고 하는데 디버깅 돌려보니 백그라운드에서 계속 검사를 하긴 하는데 addview를 거쳐도 화면에 표시되지가 않습니다. 어떻게 해야하나요??

@Override
public int onStartCommand(Intent intent,int flags,int startId){
    try {
        Toast.makeText(getApplicationContext(), "onStartCommand 호출", Toast.LENGTH_LONG).show();
        ActivityManager manager = (ActivityManager) getSystemService( Activity.ACTIVITY_SERVICE );
        List<ActivityManager.RunningTaskInfo> list = manager.getRunningTasks(1);
        final ActivityManager.RunningTaskInfo info=list.get(0);
        HandlerThread handlerThread = new HandlerThread("android_handler");
        handlerThread.start();
        Handler handler = new Handler(Looper.getMainLooper());
            new Thread(new Runnable() {
                public void run() {
                    while(true) {
                        if (info.topActivity.getClassName().equals("com.example.jiinheo.momsee.LoadingActivity")) {
                            mWindowManager.removeViewImmediate(layout);
                            temp = null;
                        } else {
                            if (temp == null)
                                try {
                                    mWindowManager.addView(layout, mParams);
                                }catch(Exception e){
                                    e.printStackTrace();
                                }
                            temp = layout;
                        }
                    }
                }
            }).start();


    }catch (Exception e){
        e.printStackTrace();
    }
    return super.onStartCommand(intent,flags,startId);
}
역도성식류염 (140 포인트) 님이 2019년 1월 30일 질문

1개의 답변

+1 추천
thread에서 UI처리를 시도하는 것부터 잘못 되었네요.
디자이너정 (42,810 포인트) 님이 2019년 1월 30일 답변
while문 빼고 한 번만 작업하면 정상적으로 실행됩니다.
문제가 반복해서 작업이 안되는 것인데
어떻게 해야할까요 ㅠㅜ
...