0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
1

В чем может быть ошибка при вызове сервиса?

22.04.2016, 17:20. Показов 2315. Ответов 6

Студворк — интернет-сервис помощи студентам
В чем может быть проблема при вызове сервиса?

Изучаю service, и возник вопрос по-поводу, передачи данных между сервисом и активити. Нашел этот урок, и сделал все как в нем описано. Но при вызове сервиса - выбрасывает просто с программы, при этом в логах не пишет никаких exeption или ошибок. Просто такой диалог , и закрывается программа:

Вот мой код:

активити:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
public class MainActivity extends AppCompatActivity {
 
    private final int TASK1_CODE = 1;
    private final int TASK2_CODE = 2;
    private final int TASK3_CODE = 3;
 
    public final static int STATUS_START = 100;
    public final static int STATUS_FINISH = 200;
 
    public static final String PARAM_TIME = "TIME";
    public static final String PARAM_PINTENT = "PINTENT";
    public static final String PARAM_RESULT = "RESULT";
 
    private TextView textTask1, textTask2, textTask3;
    private Button startService;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textTask1 = (TextView) findViewById(R.id.task1);
        textTask1.setText("task 1 ");
 
        textTask2 = (TextView) findViewById(R.id.task2);
        textTask2.setText("task 2");
 
        textTask3 = (TextView) findViewById(R.id.task3);
        textTask3.setText("task 3");
 
        startService = (Button) findViewById(R.id.startButton);
        startService.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onClickStart();
            }
        });
 
 
    }
 
 
    private void onClickStart(){
        PendingIntent pi;
        Intent intent;
 
        pi = createPendingResult(TASK1_CODE, null, 0);
        intent = new Intent(getApplicationContext(), MyService.class)
                .putExtra(PARAM_TIME, 7)
                .putExtra(PARAM_PINTENT, pi);
        startService(intent);
 
        pi = createPendingResult(TASK2_CODE, null, 0);
        intent = new Intent(getApplicationContext(), MyService.class)
                .putExtra(PARAM_TIME, 4)
                .putExtra(PARAM_PINTENT, pi);
        startService(intent);
 
        pi = createPendingResult(TASK3_CODE, null, 0);
        intent = new Intent(getApplicationContext(), MyService.class)
                .putExtra(PARAM_TIME, 6)
                .putExtra(PARAM_PINTENT, pi);
        startService(intent);
 
    }
 
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == STATUS_START){
            switch (requestCode){
                case TASK1_CODE:{
                    textTask1.setText("task 1 start");
                    break;
                }
                case TASK2_CODE:{
                    textTask2.setText("task 2 start");
                    break;
                }
                case TASK3_CODE:{
                    textTask3.setText("task 3 start");
                    break;
                }
            }
        }
        if (resultCode == STATUS_FINISH){
            int result = data.getIntExtra(PARAM_RESULT, 0);
            switch (requestCode){
                case TASK1_CODE:{
                    textTask1.setText("task 1 finish, result = " + result );
                    break;
                }
                case TASK2_CODE:{
                    textTask2.setText("task 2 finish, result = " + result);
                    break;
                }
                case TASK3_CODE:{
                    textTask3.setText("task 3 finish , result = " + result);
                    break;
                }
            }
        }
 
    }
 
 
}

и сервис:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public class MyService extends Service {
 
    private final String LOG = "MYSERVICELOG";
    private ExecutorService executorService;
 
    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(LOG, "onCreate");
        executorService = Executors.newFixedThreadPool(2);
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(LOG, "onDestroy");
    }
 
 
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(LOG, "onStartCommand");
        int time = intent.getIntExtra(MainActivity.PARAM_TIME, 1);
        PendingIntent pi = intent.getParcelableExtra(MainActivity.PARAM_PINTENT);
 
        MyRun myRun = new MyRun(time, startId, pi);
        executorService.execute(myRun);
 
        return super.onStartCommand(intent, flags, startId);
 
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
 
    class MyRun implements Runnable{
 
        private int time, startId;
        private PendingIntent pendingIntent;
 
        public MyRun(int time, int startId, PendingIntent pendingIntent){
            this.time = time;
            this.startId = startId;
            this.pendingIntent = pendingIntent;
            Log.d(LOG, "MyRun# " + startId + " created");
        }
 
 
        @Override
        public void run() {
            Log.d(LOG, "MyRun# " + startId + " time: " + time + " start");
            try {
                pendingIntent.send(MainActivity.STATUS_START);
 
                 TimeUnit.SECONDS.sleep(time);
                Intent intent = new Intent()
                        .putExtra(MainActivity.PARAM_RESULT, time *100);
                pendingIntent.send(MyService.this, MainActivity.STATUS_FINISH, intent);
 
            }catch (PendingIntent.CanceledException ce){
                ce.getStackTrace();
            }catch (InterruptedException ie){
                ie.getStackTrace();
            }
            stop();
 
        }
 
        private void stop(){
            Log.d(LOG, "MyService# " + startId + " stoped" );
            stopSelfResult(startId);
        }
 
 
    }
 
}

В чем может быть проблема ??

Помогите, не могу понять !!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2016, 17:20
Ответы с готовыми решениями:

в чем ошибка при создание этого сервиса на андроиде?
всем привет! хотел повторить этот пример создания сервиса...

Проблема ( 503 ошибка ) . При чем может быть здесь PHP?
Привет, друзья ! Буквально 3 месяца назад начали сталкиваться с такой проблемой. На сайте не...

При выполнении вычисления появляется ошибка. В чем может быть проблема
Здравствуйте, при выполнении данного вычисления: d=0.0025; I=35; tv=30; r=1.2*10^-6;...

Ошибка При Вызове Внешнего Веб Сервиса
Всем доброе время суток: пытаюсь вызвать внешний сервис UPS для получения стоимости курьерской...

6
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.04.2016, 17:27 2
ЛОГ ОШИБКИ ГДЕ???

Добавлено через 1 минуту
Java
1
intent = new Intent(getApplicationContext(), MyService.class)

intent = new Intent(MainActivity.this, MyService.class)
0
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
22.04.2016, 17:31  [ТС] 3
Паблито,
Цитата Сообщение от Паблито Посмотреть сообщение
intent = new Intent(MainActivity.this, MyService.class)
И все равно вылетает (
0
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
22.04.2016, 17:41 4
Лучший ответ Сообщение было отмечено prokopov как решение

Решение

Java
1
pi = createPendingResult(TASK1_CODE, null, 0);
Что за бред? Вторым аргументом должен быть intent, попробуйте:
Java
1
2
Intent intent2 = new Intent(this, MyService.class);
pi = createPendingResult(TASK1_CODE, intent2, 0);
1
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
22.04.2016, 23:22  [ТС] 5
DarkVortex,

если я делаю так:
Java
1
2
3
4
5
6
pi = createPendingResult(TASK1_CODE, null, 0);
intent = new Intent(MainActivity.this, MyService.class)
                .putExtra(PARAM_TIME, 7)
                .putExtra(PARAM_PINTENT, pi);
 
 startService(intent);
Изменю на:

Java
1
2
3
4
intent = new Intent(MainActivity.this, MyService.class)
                .putExtra(PARAM_TIME, 7)
                .putExtra(PARAM_PINTENT, pi);
pi = createPendingResult(TASK1_CODE, intent, 0);
Как тогда запустить сервис и передать в него "pi" c интентом?
0
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
23.04.2016, 00:22 6
prokopov, я не так показывал, еще один intent сделайте, и его вместо null передавайте
0
0 / 0 / 2
Регистрация: 19.04.2015
Сообщений: 92
23.04.2016, 01:20  [ТС] 7
DarkVortex,
Цитата Сообщение от DarkVortex Посмотреть сообщение
я не так показывал, еще один intent сделайте
Спасибо, немного невнимательно прочел ответ!

Сделал так - все заработало :

Java
1
  pi = createPendingResult(TASK1_CODE, new Intent(), 0);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2016, 01:20
Помогаю со студенческими работами здесь

Лишнии цифры при вызове времени что может быть
При вызове времени в конце времени лишнии цифры Console.WriteLine(DateTime.Now.TimeOfDay);

Java агент ошибка при вызове веб сервиса
Добрый день! Агент вызывающий Web-сервис с помощью Axis, вызывает ошибки если файлы jar (axis.jar,...

В чем может быть ошибка
В чем может быть ошибка

В чем может быть ошибка?
В общем суть следующая. Пытаюсь установить скрипт обменника Payeer на сайт. Вот код: А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru