2014-01-23 2 views
0

내 앱 - 은 모바일 번호와 메시지가 포함 된 스캐너로 텍스트 파일을 읽습니다. 텍스트 파일 당 각 모바일 번호로 SMS를 전송합니다. SMS의 횟수가 20에서 140까지 변할 때마다 약 8 ~ 10 분이 소요됩니다.Wakelock CPU 실행을 유지하지 않음

터치를 계속해서 사용하여 CPU를 계속 실행하면 모든 SMS가 제대로 전송됩니다. 문제 없어.

기기를 만지지 않고 보관하는 경우 15-20 SMS 만 전송됩니다.

사용하려고 시도했습니다. 1 화면을 켜고 작동하지 않습니다. 2 부분적인 wakelock 사용 - 작동하지 않음 3 10 분 후에 wakelock을 해제하기위한 핸들러가있는 부분적 wakelock 사용 - 여전히 15-20 SMS 만 전송되었지만 wakelock은 10 분 후에 realeased됩니다. 4 부분적인 wakelock으로 화면을 유지합니다. 위와 동일하지만 작동하지 않습니다.

여기 내 코드입니다.

public class Ardtxt extends Activity { 
private Button buttonsendsms; 
String gg = "my app"; 
File fileexists ; 
String mdn, msg; 
String tomdn = "9123456789"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_ardtxt); 
//********************* 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    Button buttonsendsms = (Button) findViewById(R.id.buttonsendsms); 


    buttonsendsms.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 

      PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
      final WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 
        "ardtxtwakelock"); 
      wakeLock.acquire(); 

      final Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), "All SMS are sent.",Toast.LENGTH_LONG).show(); 
        SmsManager smsManager = SmsManager.getDefault(); 
        smsManager.sendTextMessage("9123456789", null, "wake lock released", null, null); 
        wakeLock.release(); 
       } 
      }, 600000); 


      Toast.makeText(getApplicationContext(), "start" , Toast.LENGTH_LONG).show(); 
      Log.d("chk","app start"); 

      File directory = new File(Environment.getExternalStorageDirectory()+File.separator+"kk"); 
      directory.mkdirs(); 

      Log.d("mytxt app App", Environment.getExternalStorageDirectory()+File.separator+"kk"); 
      fileexists = new File(Environment.getExternalStorageDirectory()+File.separator+"kk"+File.separator, "Sample1.txt"); 
       if (fileexists.exists()) { 
       //Do action 
        Log.d("app exxxxx",String.valueOf(fileexists)); 
        Toast.makeText(getApplicationContext(), "subject file exists" , Toast.LENGTH_LONG).show(); 
        System.out.println("file exists so can be used by us"); 
       Log.d("Ketan check", "Sample1.txt exists"); 
       try { 
        Readtxtfile(); 
       }catch (FileNotFoundException e) { 
        // TODO Auto-generated catch block 
       Log.d(gg,"Exception : file not found"); 
        e.printStackTrace(); 
        Toast.makeText(getApplicationContext(), "crpg file not found" , Toast.LENGTH_LONG).show(); 

       } 
       } 
     } 

     });} 

Pl가 제가 누락되었거나 부분적인 wakelock이 CPU를 활성 상태로 유지하지 못하는 이유를 알려주십시오.

감사합니다.

+0

관련 항목에 대한 잠자기 잠금 권한을 추가 했습니까? 만약 그렇다면, 나는 코드를 쓰레드 (또는 AsyncTask, 또는 더 좋게, 쓰레드가있는 서비스)로 보내는 SMS를 옮기려고한다. –

답변

0

예, wakelock 권한을 추가했습니다. 그러나 스레드로 서비스를 코딩하는 방법을 잘 모르겠습니다. 가능한 경우 샘플 코드를 제공하십시오. 검색에서 유용한 코드가 밝혀지지 않았거나 그 코드를 이해할 수 없었습니다.

감사합니다.

관련 문제