Android 에서 App 을 이용 하여 메시지 전송 메커니즘 을 실현 하 는 코드
<!-- com.cnblogs.tianxia.message -->
<service android:name=".service.messageservice" android:label=" " android:process=".message" />
<!-- -->
<!-- com.cnblogs.tianxia:message -->
<service android:name=".service.messageservice" android:label=" " android:process=":message" />
, , 。
3.
public class messageservice extends service {
//
private messagethread messagethread = null;
//
private intent messageintent = null;
private pendingintent messagependingintent = null;
//
private int messagenotificationid = 1000;
private notification messagenotification = null;
private notificationmanager messagenotificatiomanager = null;
public ibinder onbind(intent intent) {
return null;
}
@override
public int onstartcommand(intent intent, int flags, int startid) {
//
messagenotification = new notification();
messagenotification.icon = r.drawable.icon;
messagenotification.tickertext = " ";
messagenotification.defaults = notification.default_sound;
messagenotificatiomanager = (notificationmanager)getsystemservice(context.notification_service);
messageintent = new intent(this, messageactivity.class);
messagependingintent = pendingintent.getactivity(this,0,messageintent,0);
//
messagethread = new messagethread();
messagethread.isrunning = true;
messagethread.start();
return super.onstartcommand(intent, flags, startid);
}
/**
*
*
*/
class messagethread extends thread{
// ,www.3ppt.com
public boolean isrunning = true;
public void run() {
while(isrunning){
try {
// 10
thread.sleep(600000);
//
string servermessage = getservermessage();
if(servermessage!=null&&!"".equals(servermessage)){
//
messagenotification.setlatesteventinfo(messageservice.this," "," ,
!"+servermessage,messagependingintent);
messagenotificatiomanager.notify(messagenotificationid, messagenotification);
// , id ,
messagenotificationid++;
}
} catch (interruptedexception e) {
e.printstacktrace();
}
}
}
}
/**
* demo,
* @return , ,
*/
public string getservermessage(){
return "yes!";
}
}
그 중에서 messageactivity 는 점프 를 클릭 한 activity 로 상세 한 정 보 를 처리 합 니 다.다른 activity 에서 호출 합 니 다.
boolean ismessagepush = true;// false;
...
if(ismessagepush){
startservice(new intent(this, messageservice.class))
};
실행 합 니 다.4.서비스 1 stopservice(new intent(my activity.this,messageservice.class)를 중단 합 니 다.2 setmessagepush(false);//설정 파일 이나 데이터베이스 에 있 는 flag 를 false 로 실행 시 키 고 서 비 스 를 중단 한 후에 의외로 멈 추 지 않 았 습 니 다.어떻게 된 일 입 니까?코드 잘못 쓴 거 아니 야?코드 가 잘못 되 지 않 았 습 니 다.서 비 스 를 멈 추 었 지만 프로 세 스 를 멈 추 지 않 고 스 레 드 를 종료 한 것 이 잘못 되 었 습 니 다.5.스 레 드 실천 을 종료 하면 thread 의 stop()방법 이 믿 을 수 없다 는 것 을 증명 합 니 다.하지만 우 리 는 다른 방법 이 있다.코드 앞에서 프로 그 래머 는 하느님 이다.스 레 드 를 종료 하 는 데 는 두 가지 방법 이 있 습 니 다.첫 번 째 방법,강제 퇴장./이 스 레 드 가 있 는 프로 세 스 를 죽 이면 자연히 2 system.exit(0)을 종료 합 니 다.두 번 째 방법 은 isrunning 을 false 로 설정 합 니 다.view sourceprint?1//앞에서 isrunning 이라는 표 지 를 언급 했 습 니 다.false 로 설정 한 후에 스 레 드 의 실행 은 while 순환 에서 뛰 어 나 왔 습 니 다.그리고 자 연 스 럽 게 2 messagethread.isrunning=false 를 끝 냈 습 니 다.종합 적 으로,우 리 는 message 서비스 에서 ondestroy()를 다시 불 러 오 는 방법 은 다음 과 같다.
@override
public void ondestroy() {
system.exit(0);
// , , system.exit(0),
//messagethread.isrunning = false;
super.ondestroy();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.