내 앱 - 은 모바일 번호와 메시지가 포함 된 스캐너로 텍스트 파일을 읽습니다. 텍스트 파일 당 각 모바일 번호로 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를 활성 상태로 유지하지 못하는 이유를 알려주십시오.
감사합니다.
관련 항목에 대한 잠자기 잠금 권한을 추가 했습니까? 만약 그렇다면, 나는 코드를 쓰레드 (또는 AsyncTask, 또는 더 좋게, 쓰레드가있는 서비스)로 보내는 SMS를 옮기려고한다. –