|  |  |  | 
|---|
|  |  |  | import androidx.annotation.Nullable; | 
|---|
|  |  |  | import androidx.appcompat.app.AppCompatActivity; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import android.app.AlarmManager; | 
|---|
|  |  |  | import android.app.PendingIntent; | 
|---|
|  |  |  | import android.content.Context; | 
|---|
|  |  |  | import android.content.Intent; | 
|---|
|  |  |  | import android.os.Bundle; | 
|---|
|  |  |  | import android.text.TextUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.doumee.keyCabinet.MApplication; | 
|---|
|  |  |  | import com.doumee.keyCabinet.R; | 
|---|
|  |  |  | import com.doumee.keyCabinet.base.MyBaseActivity; | 
|---|
|  |  |  | import com.doumee.keyCabinet.databinding.ChangeUrlActivityBinding; | 
|---|
|  |  |  | import com.doumee.keyCabinet.http.Apis; | 
|---|
|  |  |  | import com.doumee.keyCabinet.ui.main.MainActivity; | 
|---|
|  |  |  | import com.doumee.keyCabinet.utils.LMobileInfo; | 
|---|
|  |  |  | import com.doumee.keyCabinet.utils.i485.SportUtils; | 
|---|
|  |  |  | import com.doumee.lib_coremodel.bean.event.ActionEventData; | 
|---|
|  |  |  | import com.doumee.lib_coremodel.util.SpUtil; | 
|---|
|  |  |  | import com.doumee.lib_coremodel.view.ToastView; | 
|---|
|  |  |  | import com.example.datalibrary.utils.ToastUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import dagger.hilt.android.AndroidEntryPoint; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | isAddCountTimer = false; | 
|---|
|  |  |  | normalConfig(); | 
|---|
|  |  |  | getDB().setModel(getVM()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | getDB().etNo.setText(LMobileInfo.getDeviceUniqueId()); | 
|---|
|  |  |  | getDB().etNo.setEnabled(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void initData(@Nullable Bundle savedInstanceState) { | 
|---|
|  |  |  | getDB().etUrl.setText(SpUtil.getString("base_url", Apis.HTTP)); | 
|---|
|  |  |  | getDB().etTime.setText(SpUtil.getInt("loop_time",30)+""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | protected void doRegister(int type, ActionEventData data) { | 
|---|
|  |  |  | switch (type){ | 
|---|
|  |  |  | case 2: | 
|---|
|  |  |  | String url = getDB().etUrl.getText().toString(); | 
|---|
|  |  |  | if(TextUtils.isEmpty(url)){ | 
|---|
|  |  |  | ToastView.show(MApplication.mContext,"接口地址不能为空"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!url.startsWith("http://")||!url.startsWith("https://")||!url.endsWith("/")){ | 
|---|
|  |  |  | ToastView.show(MApplication.mContext,"接口地址错误"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(TextUtils.isEmpty(getDB().etTime.getText().toString())){ | 
|---|
|  |  |  | ToastView.show(MApplication.mContext,"接口调用间隔不能为空"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | int time = Integer.parseInt(getDB().etTime.getText().toString()); | 
|---|
|  |  |  | if(time<=0){ | 
|---|
|  |  |  | ToastView.show(MApplication.mContext,"接口调用间隔错误"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String oldUrl = SpUtil.getString("base_url", Apis.HTTP); | 
|---|
|  |  |  | SpUtil.saveString("base_url",url); | 
|---|
|  |  |  | SpUtil.saveInt("loop_time",time); | 
|---|
|  |  |  | ToastView.show(MApplication.mContext,"保存成功"); | 
|---|
|  |  |  | if(!oldUrl.equals(url)){ | 
|---|
|  |  |  | //接口不同,重新启动 | 
|---|
|  |  |  | restartApp(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void restartApp(){ | 
|---|
|  |  |  | // 创建一个新的启动意图 | 
|---|
|  |  |  | Intent intent = new Intent(mContext, MainActivity.class); | 
|---|
|  |  |  | // 设置FLAG_ACTIVITY_CLEAR_TASK标志位 | 
|---|
|  |  |  | intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); | 
|---|
|  |  |  | // 使用PendingIntent包装启动意图 | 
|---|
|  |  |  | PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_ONE_SHOT); | 
|---|
|  |  |  | // 获取AlarmManager实例 | 
|---|
|  |  |  | AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); | 
|---|
|  |  |  | // 在500毫秒后触发重启操作 | 
|---|
|  |  |  | alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 10, pendingIntent); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | android.os.Process.killProcess(android.os.Process.myPid()); | 
|---|
|  |  |  | System.exit(1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|